替换
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表示对数组进行列拼接
-