numpy的函数(二)
- 布尔函数
函数
|
说明 |
np.any()
|
是否有一个元素为True
|
np.all()
|
是否所有元素为True
|
# numpy的常用bool函数
def function1():
arr = np.array([1, 0, 2, 4])
# True
print(np.any(arr))
# False
print(np.all(arr))
- 矩阵函数
函数
|
说明
|
np.diag(array)
|
以一维数组的形式返回方阵的对角线(或非对角线)元素
|
np.diag([x,y,…])
|
将一维数组转化为方阵数组(非对角线元素为0),类型还是数组
|
np.dot(ndarray, ndarray)
|
数组相乘
|
np.trace(ndarray)
|
计算数组对角线元素的和
|
np.mat / matrix
|
创建矩阵
|
np.bmat(array)
|
数组变矩阵
|
matrix.H(matrix为矩阵对象)
|
求共轭转置,实部不变,虚部相反
|
matrix.I
|
求逆矩阵(可逆矩阵,不能是奇异矩阵)
|
matrix.T
|
求矩阵的转置
|
# numpy的常用矩阵函数
def function2():
# 新建一维数组
arr = np.array([1, 2, 3, 4])
# 以一维数组元素为对角线,其他元素为0,构建二维方阵数组
# [[1 0 0 0]
# [0 2 0 0]
# [0 0 3 0]
# [0 0 0 4]]
arr1 = np.diag(arr)
print(type(arr1), "方阵数组\n", arr1)
# 数组转换成矩阵
# [[1 0 0 0]
# [0 2 0 0]
# [0 0 3 0]
# [0 0 0 4]]
rec1 = np.bmat(arr1)
print(type(rec1), "方阵\n", rec1)
# 创建矩阵
# [[5, 6]
# [7, 8]]
rec = np.mat([[5, 6], [7, 8]])
# 求矩阵的对角线元素和,迹 = a11 + a22 + ... + ann
# 13 = 5 + 8
print("矩阵的迹:", np.trace(rec))
# 求共轭转置,实部不变,虚部相反
# [[5 7]
# [6 8]]
print("共轭转置矩阵:\n", rec.H)
# 求逆矩阵,前提是非奇异矩阵
# [[-4. 3. ]
# [ 3.5 -2.5]]
print("逆矩阵:\n", rec.I)
- 排序函数
-
np.sort(self, axis=-1, kind='quicksort', order=None)
- self:可以对象调用,np.sort(array) 或 array.sort()
-
axis:沿着那个轴排序。默认为-1,意味着,默认以最内层或最大轴序号为标准排序
-
kind:排序算法,有'quicksort', 'mergesort', 'heapsort', 'stable',默认为快速排序
-
- order:如果数组包含字段,则是要排序的字段
函数
|
说明
|
np.sort(ndarray)
|
排序,返回副本,默认升序
|
-np.sort(-ndarray)
|
降序排序,先取反排序,再结果取反
|
np.argsort(ndarray)
|
返回排序后的下标值
|
# numpy常用的排序函数
def function3():
arr = np.array([5, 3, 4, 1, 7, 9, 6, 2])
# [1 2 3 4 5 6 7 9]
print("升序:", np.sort(arr))
# [9 7 6 5 4 3 2 1]
print("降序:", -np.sort(-arr))
# [3 7 1 2 0 6 4 5]
# 如第一个位置内容为3,这个升序排序中元素 1 最小,而 1 元素在排序前的索引为 3
# 同理第二个位置是7,这个排序中第二小的为 2,而 2 元素在原序列的索引为 7
print("升序索引:", np.argsort(arr))
- 其他函数
函数
|
说明
|
unique(x)
|
计算x中的唯一元素,并返回有序结果
|
intersectd(x, y)
|
计算x和y中的公共元素,并返回有序结果
|
union1d(x, y)
|
计算x和y中的并集,并返回有序结果
|
in1d(x, y)
|
得到一个表示“x的元素是否包含于y”的布尔型数组
|
setdiff1d(x, y)
|
集合的差,即元素在x中且不在y中
|
setxor1d(x, y)
|
集合的对称差,即存在于一个数组中但不同时存在与两个数组中的元素
|
# numpy常用的其他函数
def function4():
arr1 = np.array([
[2, 1, 4, 2],
[7, 1, 6, 4]
])
arr2 = np.array([
[1, 2, 3, 4],
[1, 3, 5, 8]
])
# 去掉数组相同元素,并返回有序结果
# [1 2 4 6 7]
print(np.unique(arr1))
# 交集,即arr1与arr2都存在的共同元素
# [1 2 4]
print(np.intersect1d(arr1, arr2))
# 差集,arr1中存在,且arr2中不存在的元素
# [6 7]
print(np.setdiff1d(arr1, arr2))