Numpy常用操作总结

Numpy常用操作总结

Scroll Down

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)
  1. array为要填补的数组
  2. pad_width是在各维度的各个方向上想要填补的长度,如((1,2),(2,2)),表示在第一个维度上水平方向上padding=1,垂直方向上padding=2,在第二个维度上水平方向上padding=2,垂直方向上padding=2。如果直接输入一个整数,则说明各个维度和各个方向所填补的长度都一样。
  3. mode为填补类型,即怎样去填补,有“constant”,“edge”等模式,如果为constant模式,就得指定填补的值,如果不指定,则默认填充0。
  4. 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])