Numpy数组操作

发布时间 2023-10-25 11:56:08作者: Jedi_Pz

替换

numpy.where()

  • numpy.where(conditions,x,y):查找矩阵中满足一定条件的元素,然后全部替换为设定的值。
    如果conditions成立,则数组中的元素变为x值,否则数组中的元素变为y值。
  • 替换过程不会更改原始数组。
import numpy as np
arr5=np.array([2,6,2,9])
# 将大于2的数组元素替换为1,小于等于2的元素替换为0
arr6=np.where(arr5>2,1,0)
print(arr6)                       #[0 1 0 1]
print(arr5)                       #[2 6 2 9]
# 二维数组(矩阵)
arr7=np.arange(9).reshape(3,3)    
print(arr7)                       #[[0 1 2][3 4 5][6 7 8]]
# 将大于3的数组元素替换为1,小于3的数组元素替换为0
arr8=np.where(arr7>3,1,0)
print(arr8)                       #[[0 0 0][0 1 1][1 1 1]]

ndarray.astype()

  • ndarray.astype()转换类型,参数为int,float

排序

  • 通过sort()函数对数组进行排序,具体语法格式为:
    np.sort(a, axis=-1, kind='quicksort', order=None)
  • a:所需排序的数组。
    axis:可选参数,取值整数或None。若axis为None,数组先偏平化(降维)再排序。若axis=n, 表示沿着数组的轴n排序。默认axis为-1,表示沿数组的最后一条轴排序。
    kind:排序算法,取值为quicksort、mergesort、heapsort分别表示快速排序、合并排序、堆排序。默认取值为quicksort。
    order:在结构化数组中,可以指定按某个字段排序。
    ![[Numpy排序轴顺序.png]]```
import numpy as np
arr1 = np.array([[3,2],[1,6],[2,1],[0,9],[4,8],[5,7]])
arr2 = np.sort(arr1,axis=None)
arr3 = np.sort(arr1,axis=-1) # 对每行内的元素排序
arr4 = np.sort(arr1,axis=0)	# 对每列内的元素排序
arr5 = np.sort(arr1,axis=1)	# 对每行内的元素排序
print(arr2) #[0 1 1 2 2 3 4 5 6 7 8 9]
print(arr3) #[[2 3]
			 [1 6]
			 [1 2]
			 [0 9]
			 [4 8]
			 [5 7]]
print(arr4) #[[0 1]
			 [1 2]
			 [2 6]
			 [3 7]
			 [4 8]
			 [5 9]]
print(arr5) #[[2 3]
			 [1 6]
			 [1 2]
			 [0 9]
			 [4 8]
			 [5 7]]

重塑

numpy.reshape()

  • 通过np. reshape()函数改变数组的形状,具体语法格式为:
    reshape(a, newshape, order ='C')
  • 其中:
    a:要改变的数组。
    newshape:要转换成何种形式的新数组。
    order:表示按照该索引的顺序重新排列数组,默认参数是C,即按行填充,当参数为F时,则按列填充。

numpy.ravel()

  • 通过ravel的方法将数组拉直,即将多维数组降为1维数组。
  • print(arr6.ravel()) array([0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3])

ndarray.transpose()

  • ndarray.transpose()函数和T属性的效果一样,均可以获得一个数组的转置矩阵。
import numpy as np
arr7 = np.arange(15).reshape(3, 5)
print(arr7)
# 使用transpose()函数进行转置
print(arr7.transpose())
# 使用T属性进行数组转置
print(arr7.T)
运行结果如下:
[[ 0  1  2  3  4]
 [ 5  6  7  8  9]
 [10 11 12 13 14]]
[[ 0  5 10]
 [ 1  6 11]
 [ 2  7 12]
 [ 3  8 13]
 [ 4  9 14]]
[[ 0  5 10]
 [ 1  6 11]
 [ 2  7 12]
 [ 3  8 13]
 [ 4  9 14]]

合并

numpy.concatenate()

  • 使用np.concatenate()函数能够一次完成多个数组的拼接
  • 具体语法格式为:np.concatenate((a1,a2,…),axis=0)其中,a1,a2,…是数组类型的参数。
  • axis=1表示对应行的数组进行拼接,axis=0表示对数组进行列拼接