import numpy as np
除了前面介绍的ndarray数组对象和ufunc函数之外,NumPy还提供了大量对数组进行处理的函数。
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]
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()等,读者自行查看函数的文档。
unique()返回其参数数组中所有不同的值,并且按照从小到大的顺序排列。它有两个可选参数:
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]
Numpy 支持的数据类型比 Python 内置的类型要多很多,基本上可以和 C 语言的数据类型对应上,其中部分类型对应为 Python 内置的类型。下表列举了常用 NumPy 基本类型。
NumPy 的数组中比较重要 ndarray 对象属性有:
广播(Broadcast)是 Numpy 对不同形状(shape)的数组进行数值计算的方式, 对数组的算术运算通常在相应的元素上进行。 如果两个数组 a 和 b 形状相同,即满足 a.shape == b.shape,那么 aXb 的结果就是 a 与 b 数组对应位相乘。这要求维数相同,且各维度的长度相同。 当运算中的 2 个数组的形状不同时,numpy 将自动触发广播机制。如:
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)
[[ 1 2 3]
[11 12 13]
[21 22 23]
[31 32 33]]
以下函数用于对 dtype 为 numpy.string_ 或 numpy.unicode_ 的数组执行向量化字符串操作。 它们基于 Python 内置库中的标准字符串函数。
这些函数在字符数组类(numpy.char)中定义。
—End—