目录
目录
Posts List
  1. numpy.argsort
  2. numpy.argmax/argmin
  3. numpy.bincount
  4. numpy.split/array_split
  5. numpy.vstack/hstack

Numpy函数:argsort,argmax,bincount,split,vstack

numpy.argsort

argsort(a, axis=-1, kind=None, order=None)

返回从小到大排序后的下标列表。

参数:

  • a:待排序的array
  • axis:一个int,指示排序维度,-1表示最后一维
  • kind:{‘quicksort’, ‘mergesort’, ‘heapsort’, ‘stable’},排序方法,默认为‘quicksort’
  • order:定义排序顺序
1
2
3
4
5
6
7
import numpy as np

print(np.argsort([1, 5, 3, 4, 2]))

a = np.array([1, 5, 4, 3, 2])

print(a[np.argsort(a)[:2]])
1
2
[0 4 2 3 1]
[1 2]

numpy.argmax/argmin

numpy.argmax(a, axis=None, out=None)

numpy.argmin(a, axis=None, out=None)

返回最大/小值的下标。

参数:

  • a:待排序的array
  • axis:一个int,指示排序维度,默认对array做扁平化处理
  • out:将结果加入out
1
2
3
4
5
6
7
a = np.arange(6).reshape(2, 3) + 10

print(a)

print(np.argmax(a))
print(np.argmax(a, axis = 0))
print(np.argmax(a, axis = 1))
1
2
3
4
5
[[10 11 12]
[13 14 15]]
5
[1 1 1]
[2 2]

numpy.bincount

numpy.bincount(x, weights=None, minlength=0)

统计每个元素的出现次数。

bin值为x中最大数字的值+1,函数返回一个长度为bin的array,表示每个数字的出现次数。

参数:

  • x:一维非负整数array
  • weights:一个与x具有相同shape的array,可以为不同位置设定不同的统计权重
  • minlength:限定bin的最小值
1
print(np.bincount(np.array([0, 1, 1, 3, 2, 1, 7])))
1
[1 3 1 1 0 0 0 1]
1
2
3
w = np.array([0.3, 0.5, 0.2, 0.7, 1, -0.6])
x = np.array([0, 1, 1, 2, 2, 2])
print(np.bincount(x, weights=w))
1
[0.3 0.7 1.1]

numpy.split/array_split

numpy.split(ary, indices_or_sections, axis=0)

numpy.array_split(ary, indices_or_sections, axis=0)

将array分割为若干个sub-arrays。

若第二个参数是一个int N,则将array均分为N份;若第二个参数是一个一维array,则表示分割点。

split()和array_split()的区别在于当第二个参数为int且无法整除序列长度时,split()会报错,而array_split()不会。

参数:

  • ary:待分割array
  • indices_or_sections:含义如上所述
  • axis:分割所沿的维度
1
2
3
4
5
6
7
x = np.arange(9)
y = np.arange(8)

print(np.split(x, 3))
print(np.array_split(y, 3))

print(np.split(x, [3, 5, 6, 10]))
1
2
3
[array([0, 1, 2]), array([3, 4, 5]), array([6, 7, 8])]
[array([0, 1, 2]), array([3, 4, 5]), array([6, 7])]
[array([0, 1, 2]), array([3, 4]), array([5]), array([6, 7, 8]), array([], dtype=int32)]

numpy.vstack/hstack

numpy.vstack(tup)

numpy.hstack(tup)

沿垂直/水平方向堆叠array。

参数:

  • tup:一组arrays,除第一/二维度外应具有相同的shape
1
2
3
4
5
6
7
a = np.array([1, 2, 3])
b = np.array([2, 3, 4])
print(np.vstack((a,b)))

a = np.array([[1],[2],[3]])
b = np.array([[2],[3],[4]])
print(np.hstack((a,b)))
1
2
3
4
5
[[1 2 3]
[2 3 4]]
[[1 2]
[2 3]
[3 4]]