索引
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)