import numpy as np
2.3 庞大的函数库
除了前面介绍的ndarray数组对象和ufunc函数之外,NumPy还提供了大量对数组进行处理的函数。
2.3.1 求和、平均值、方差
sum()函数
计算数组元素之和,当数组是多维时,它计算数组中所有元素的和;
如果指定axis参数,求和运算将沿着指定的轴进行(将得到长度为轴场的一维数组)。
a = np.random.randint(0,10,size=(4,5))
print(a)
print('sum求和:',np.sum(a)) # 计算数组所有元素的和
print('sum指定轴求和:',np.sum(a,axis=0)) # 计算0轴的元素之和
[[9 7 0 4 4]
[5 1 4 9 1]
[2 1 7 7 9]
[3 6 7 6 1]]
sum求和: 93
sum指定轴求和: [19 15 18 26 15]
mean()和average()函数
mean() 求数组的平均值,通过axis参数指定求平均值的轴,通过out参数指定输出数组
average() 对数组进行平均计算。它没有out和dtype参数,但有一个指定每个元素权值的weights参数
print('mean的用法:',np.mean(a,axis=0,dtype=np.double))
mean的用法: [4.75 3.75 4.5 6.5 3.75]
print('average的用法:',np.average(a,axis=0,weights=[1,0,1,1]))
average的用法: [4.66666667 4.66666667 4.66666667 5.66666667 4.66666667]
还有很多函数,如min()、max()、ptp()、argmax()、argmin()等,读者自行查看函数的文档。
2.3.2 统计函数
unique()返回其参数数组中所有不同的值,并且按照从小到大的顺序排列。它有两个可选参数:
return_index:Ture表示同时返回原始数组中的下标
return_inverse:True表示返回重建原始数组用的下标数组
a = np.random.randint(0,5,10)
print(a)
print('数组a中所有的整数:',np.unique(a))
[2 1 0 2 4 2 3 1 4 1]
数组a中所有的整数: [0 1 2 3 4]
a = np.random.randint(0,5,10)
print(a)
x, idx = np.unique(a,return_index=True)
print('数组a中所有的整数:',x)
print('前面数组在原始数组的下标:',idx) # 第一次出现的下标
[3 0 4 2 2 3 1 3 2 3]
数组a中所有的整数: [0 1 2 3 4]
前面数组在原始数组的下标: [1 6 3 0 2]
a = np.random.randint(0,5,10)
print(a)
x, idx = np.unique(a,return_inverse=True)
print('数组a中所有的整数:',x)
print('原始数组在前面数组的下标:',idx)
[2 4 4 2 0 3 3 2 1 2]
数组a中所有的整数: [0 1 2 3 4]
原始数组在前面数组的下标: [2 4 4 2 0 3 3 2 1 2]
bincount()对整数数组中各个元素出现的次数进行统计,它要求数组中所有元素都是非负的。
a = np.random.randint(0,5,10)
print(a)
print('bincount:',np.bincount(a))
[0 3 0 1 1 0 3 1 4 3]
bincount: [3 3 0 3 1]
2.4 Numpy 补充
2.4.1 NumPy 数据类型
Numpy 支持的数据类型比 Python 内置的类型要多很多,基本上可以和 C 语言的数据类型对应上,其中部分类型对应为 Python 内置的类型。下表列举了常用 NumPy 基本类型。
2.4.2 NumPy 数组属性
NumPy 的数组中比较重要 ndarray 对象属性有:
2.4.3 NumPy 广播(Broadcast)
广播(Broadcast)是 Numpy 对不同形状(shape)的数组进行数值计算的方式, 对数组的算术运算通常在相应的元素上进行。
import numpy as np
a = np.array([[ 0, 0, 0],
[10,10,10],
[20,20,20],
[30,30,30]])
b = np.array([1,2,3])
print(a + b)
2.4.4 NumPy 字符串函数
以下函数用于对 dtype 为 numpy.string_ 或 numpy.unicode_ 的数组执行向量化字符串操作。 它们基于 Python 内置库中的标准字符串函数。
这些函数在字符数组类(numpy.char)中定义。