numpy.arg的用法

177 阅读2分钟

索引

import numpy as np
x = np.random.normal(0, 1, size=1000000)

x中的最小值

np.min(x)
-5.731057746643178

最小值在哪

np.argmin(x)
966391
x[966391]
-5.731057746643178

最大值所在的位置

np.argmax(x)
439959
x[439959]
5.008080608125441
np.max(x)
5.008080608125441

排序和使用索引

x = np.arange(16)
x
array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15])

乱序处理

np.random.shuffle(x)
x
array([13,  1,  5,  9, 14, 10,  6,  4,  7,  0,  8, 15, 11, 12,  3,  2])
np.sort(x)
array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15])
x
array([13,  1,  5,  9, 14, 10,  6,  4,  7,  0,  8, 15, 11, 12,  3,  2])
x.sort()
x
array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15])

np.sort(x)没有改变x的值进行排序

要想直接对x进行排序使用x.sort()

X = np.random.randint(10, size=(4,4))
X
array([[2, 8, 3, 9],
       [5, 8, 6, 3],
       [9, 4, 7, 4],
       [5, 6, 4, 2]])
np.sort(X)
array([[2, 3, 8, 9],
       [3, 5, 6, 8],
       [4, 4, 7, 9],
       [2, 4, 5, 6]])

默认对每一行进行排序

np.sort(X,axis=1)
array([[2, 3, 8, 9],
       [3, 5, 6, 8],
       [4, 4, 7, 9],
       [2, 4, 5, 6]])

默认axis=1,沿着列的方向

np.sort(X,axis=0)
array([[2, 4, 3, 2],
       [5, 6, 4, 3],
       [5, 8, 6, 4],
       [9, 8, 7, 9]])

axis=0,对列进行排序

x
array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15])
np.random.shuffle(x)
x
array([ 7,  8,  6, 15, 13, 12,  0,  3,  5, 14,  4, 10,  2,  1,  9, 11])
np.argsort(x)
array([ 6, 13, 12,  7, 10,  8,  2,  0,  1, 14, 11, 15,  5,  4,  9,  3],
      dtype=int64)

按元素的索引进行排序

np.partition(x, 3)
array([ 0,  1,  2,  3,  4,  5,  6,  7,  8, 14, 12, 10, 13, 15,  9, 11])

对于大于标准点的函数放在标准点的右侧,小于标准点的数字放在标准点的左侧

np.argpartition(x, 3)
array([ 6, 13, 12,  7, 10,  8,  2,  0,  1,  9,  5, 11,  4,  3, 14, 15],
      dtype=int64)

返回的元素的索引

X
array([[2, 8, 3, 9],
       [5, 8, 6, 3],
       [9, 4, 7, 4],
       [5, 6, 4, 2]])
np.argsort(X, axis=1)
array([[0, 2, 1, 3],
       [3, 0, 2, 1],
       [1, 3, 2, 0],
       [3, 2, 0, 1]], dtype=int64)

返回的是相应的索引

np.argpartition(X, 2, axis=1)
array([[0, 2, 1, 3],
       [3, 0, 2, 1],
       [1, 3, 2, 0],
       [3, 2, 0, 1]], dtype=int64)
np.argpartition(X, 2, axis=0)
array([[0, 2, 0, 3],
       [1, 3, 3, 1],
       [3, 0, 1, 2],
       [2, 1, 2, 0]], dtype=int64)