Numpy对数组进行排序,返回排序后的索引
c = np.arange(10)
# 随机打乱数组
np.random.shuffle(c)
print(c)
# 打印c
array([2, 8, 5, 6, 9, 0, 4, 3, 1, 7])
# 对数组进行排序,默认按升序
cc = np.sort(c)
print(cc)
# 打印排序后的数组cc
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
# np.argsort()方法将返回对数组进行排序后的元素索引
sortIndex = np.argsort(c)
print(sortIndex)
# 打印sortIndex,sortIndex是原来的元素在排序后的索引
array([5, 8, 0, 7, 6, 2, 3, 9, 1, 4], dtype=int64)
numpy 生成全nan的数组
使用np.ones()可以生成全为1的矩阵,使用np.zeros()可以生成全为0的矩阵
如果想生成其他数的矩阵可以用
numpy.full(shape, fill_value, dtype=None, order=’C’)
参数:
shape指定要生成的矩阵形状
fill_value指定填充值
# 生成全为2的3x3的矩阵
ss = np.full(shape=(3,3),fill_value=2)
print(ss)
[[2 2 2]
[2 2 2]
[2 2 2]]
# 生成全为nan的1x3矩阵
s = np.full(shape=(1,3),fill_value=np.nan)
print(s)
[[nan nan nan]]
numpy将布尔值转为数值
有时需要将布尔值转为数值,如:
将True转为1,False转为0
实现:
a = np.array([True,False]).astype(int)
print(a)
# 输出
[1 0]
或者
a = np.array([True,False],dtype=int)
print(a)
[1 0]
相同的效果
检查numpy数组中是否全为某个数
比如检查一个数组中是否全为0
s = np.arange(10)
print(s)
# 输出
# array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
(s==0).any()
# 输出
# True
(s==0).all()
# 输出
# False
any()方法只要有任何一个是True就返回True
all()方法全为True才返回True,否则返回False
numpy用指定值扩充矩阵---np.pad()函数
函数原型:
ndarray = numpy.pad(array, pad_width, mode, **kwargs)
- array为要填补的数组
- pad_width是在各维度的各个方向上想要填补的长度,如((1,2),(2,2)),表示在第一个维度上水平方向上padding=1,垂直方向上padding=2,在第二个维度上水平方向上padding=2,垂直方向上padding=2。如果直接输入一个整数,则说明各个维度和各个方向所填补的长度都一样。
- mode为填补类型,即怎样去填补,有“constant”,“edge”等模式,如果为constant模式,就得指定填补的值,如果不指定,则默认填充0。
- ndarray为返回值。
实现:
import numpy as np
array = np.array([1, 1, 1])
# (1,2)表示在一维数组array前面填充1位,最后面填充2位
# constant_values=(0,2) 表示前面填充0,后面填充2
ndarray=np.pad(array,(1,2),'constant', constant_values=(0,2))
print("array",array)
print("ndarray=",ndarray)
# 输出
array [1 1 1]
ndarray= [0 1 1 1 2 2]
Numpy一次取多个索引值
实现:
s = np.array([111,45,87,96,63,54])
print(s[[1,3,2]])
# 输出
# array([45, 96, 87])
评论区