np.flatnonzero()
该函数返回矩阵的展平版本中非零元素的位置1
2
3import numpy as np
a = np.arange(12).reshape(3 , 4)
np.flatnonzero(a)
结果如下:
array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], dtype=int64)
np.random.choice()
numpy.random.choice(a, size=None, replace=True, p=None)
从a(只要是ndarray都可以,但必须是一维的)中随机抽取数字,并组成指定大小(size)的数组
replace:True表示可以取相同数字,False表示不可以取相同数字
数组p:与数组a相对应,表示取数组a中每个元素的概率,默认为选取每个元素的概率相同。
1 | a = np.random.choice(5 , 3) #相当于(0 , 5 , 3) |
结果如下:
array([0, 0, 3])
np.sum()
1 | a = np.arange(24).reshape(4 , 2 , 3) |
结果如下:
(2, 3) (4, 3) (4, 2)
如果第二个参数不填的话,默认将所有元素全部加起来。
第二个参数是几,就在第几个维度上求和,这在python其他函数中也是一样的情况。
np.argsort()
返回数组中按一定顺序排列后的引索值1
2
3
4
5
6
7
8a = np.array([[3 , 1 , 4] , [4 , 9 , 0] , [1 , 2 ,9]])
print(a)
print()
print(np.argsort(a , axis = 1)) #将每行排列
print()
print(np.argsort(a)) #默认将每行排列
print()
print(np.argsort(a , axis = 0)) #将每列排列
结果如下:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15[[3 1 4]
[4 9 0]
[1 2 9]]
[[1 0 2]
[2 0 1]
[0 1 2]]
[[1 0 2]
[2 0 1]
[0 1 2]]
[[2 0 1]
[0 2 0]
[1 1 2]]
上面是按从小到大排列的
若按从大到小排列:1
2a = np.array([4 , 9 , 0])
np.argsort(-a)
结果:
array([1, 0, 2], dtype=int64)
np.bincount(x , weights , minlength)
返回数组中元素的出现重复次数1
2a = np.array([4 , 9 , 0 , 0 , 3 , 2])
print(np.bincount(a))
结果如下:
[2 0 1 1 1 0 0 0 0 1]
这个函数首先输入的数组的值为int类型,而且数组必须是一维的,然后他会找出数组中的最大值(比如本例中9),然后输出就是一个长度>=max的一维数组,本例中,0出现2次,1,5,6,7,8均未出现,其中4,3,2,9均出现1次。
参数weigths 的形状是array_link(x),作用是如果weights 被指定,那么x就会被加权,也就是说,如果值n发现在位置i,那么out[n] += weight[i]而不是out[n] += 1
比如:1
2
3
4w = np.array([0.3, 0.5, 0.2, 0.7, 1., -0.6])
# 我们可以看到x中最大的数为4,因此bin的数量为5,那么它的索引值为0->4
x = np.array([2, 1, 3, 4, 4, 3])
np.bincount(x, weights=w)
结果如下:
array([ 0. , 0.5, 0.3, -0.4, 1.7])
其中3分别赋予了(0.2 + (-0.6))的权值,4为(1.0 + 0.7)的权值。
minlength 指定输出最小的长度如果数组中的最大值小于了minlength,那么少于的部分被补零。1
2a = np.array([0 , 2 , 3 , 2])
print(np.bincount(a , minlength = 10))
结果如下:
[1 0 2 1 0 0 0 0 0 0]
argmax()
先看一维1
2
3import numpy as np
a = np.array([3, 1, 2, 4, 6, 1])
print(np.argmax(a))
结果:
4
即返回的是最大值的位置
再看二维1
2
3
4
5
6a = np.array([[1, 5, 5, 2],
[9, 6, 2, 8],
[3, 7, 9, 1]])
print(np.argmax(a , axis = 0))
print()
print(np.argmax(a , axis = 1))
结果:1
2
3[1 2 2 1]
[1 0 2]
其余更多维度的都是大同小异
