numpy学习之路(4)

这篇博客主要探讨了numpy中的数值处理函数,包括np.floor进行向下取整,np.around进行四舍五入操作,并详细介绍了np.ceil返回输入值的上限功能。此外,还讲解了numpy的花式索引和布尔索引的用法,特别是如何利用布尔条件来筛选数组元素。最后提到了numpy处理NaN值的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

# np.argsort() 排序的索引
print('-' * 20)
a2 = np.array([4, 3, 1, 2])
j = np.argsort(a2)
print(j)  # [2 3 1 0]
print(a2[j])  # [1 2 3 4]

np.floor 返回不大于输入参数的最大整数。 即对于输入值 x ,将返回最大的整数 i ,使得 i <= x。 注意在Python中,向下取整总是从 0 舍入。

np.around 返回四舍五入后的值,可指定精度。
around(a, decimals=0, out=None)

np.ceil 函数返回输入值的上限,即对于输入 x ,返回最小的整数 i ,使得 i> = x。

numpy.where(condition[, x, y])
根据 condition 从 x 和 y 中选择元素,当为 True 时,选 x,否则选 y。
numpy的花式索引

import numpy as np
arr=np.arange(42).reshape(6,7)
print(arr)
print(arr[[1,2,3]])
print(arr[[0,1,2,3],[1,2,3,4]])#用来取斜线
print(arr[1:5:2,1:5:2])
print(arr[1:6:2,[2,4,6]])

结果

[[ 0  1  2  3  4  5  6]
 [ 7  8  9 10 11 12 13]
 [14 15 16 17 18 19 20]
 [21 22 23 24 25 26 27]
 [28 29 30 31 32 33 34]
 [35 36 37 38 39 40 41]]
[[ 7  8  9 10 11 12 13]
 [14 15 16 17 18 19 20]
 [21 22 23 24 25 26 27]]
[ 1  9 17 25]
[[ 8 10]
 [22 24]]
[[ 9 11 13]
 [23 25 27]
 [37 39 41]]

numpy的布尔索引

import numpy as np
arr = np.arange(28).reshape((7,4))
b=np.array([True,False,False,True,True,False,False])
names = np.array(['Ben','Tom','Ben','Jeremy','Jason','Michael','Ben'])
print(names == 'Ben')
print(arr)
print(arr[b])
print(arr[names == 'Ben'])

n结果

[ True False  True False False False  True]
[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]
 [12 13 14 15]
 [16 17 18 19]
 [20 21 22 23]
 [24 25 26 27]]
[[ 0  1  2  3]
 [12 13 14 15]
 [16 17 18 19]]
[[ 0  1  2  3]
 [ 8  9 10 11]
 [24 25 26 27]]

布尔索引是花式索引的特殊格式。

umpy的np.nan

import numpy as np
print(np.nan+6)
print(np.isnan(np.nan))
print(np.nan==np.nan)
print(np.nan==None)
print(None==None)
print(type(np.nan))
a=np.arange(24).reshape(6,4)
print(np.where(a%3,a,np.nan))
print(np.sum(np.where(a%3,a,np.nan)))
print(np.nansum(np.where(a%3,a,np.nan)))

结果

nan
True
False
False
True
<class 'float'>
[[nan  1.  2. nan]
 [ 4.  5. nan  7.]
 [ 8. nan 10. 11.]
 [nan 13. 14. nan]
 [16. 17. nan 19.]
 [20. nan 22. 23.]]
nan
192.0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值