Numpy入门

Numpy入门

ref:numpy文档

  • 在 NumPy 中,axis 参数用于指定在多维数组上进行操作的维度。[比较难以理解其在不同维度的作用,axis=0表征其对第0维即每一行进行跨行操作]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
>>> b = np.arange(12).reshape(3, 4)
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])

>>> b.sum(axis=0) # sum of each column
array([12, 15, 18, 21])

>>> b.min(axis=1) # min of each row
array([0, 4, 8])

>>> b.cumsum(axis=1) # cumulative sum along each row
array([[ 0, 1, 3, 6],
[ 4, 9, 15, 22],
[ 8, 17, 27, 38]])
  • 利用切片操作来逆转数组
    • 切片操作的语法是 a[start:stop:step],其中:
      • start:切片的起始索引(包含),如果省略,则默认从序列的开头开始。
      • stop:切片的结束索引(不包含),如果省略,则默认到序列的末尾结束。
      • step:切片的步长,决定了从 startstop 之间的元素是按什么间隔选取的。如果 step 为正数,序列将从左到右取值;如果 step 为负数,序列将从右到左取值。
    • 因此,a[::-1] 会从序列的最后一个元素开始,逆序逐个选取元素,直到取完第一个元素。这实际上就是将序列反转了。
1
>>> a[::-1]  # reversed a
  • reshape vs resize

    • reshape 返回一个新的数组,原数组保持不变。[创建的是一个视图,原数据不改变,除非进行操作影响了共享的内存。]

      resize 直接修改原数组,返回值为 None。[原地操作]

  • 将不同的数组堆叠

    • 对于具有两个以上维度的数组, hstack沿其第二个轴堆叠,vstack沿其第一个轴堆叠,
1
2
3
4
5
6
7
8
9
10
11
12
13
14
>>> a = np.floor(10 * rg.random((2, 2)))
array([[9., 7.],
[5., 2.]])
>>> b = np.floor(10 * rg.random((2, 2)))
array([[1., 9.],
[5., 1.]])
>>> np.vstack((a, b)) #垂直拼接,沿着行进行拼接
array([[9., 7.],
[5., 2.],
[1., 9.],
[5., 1.]])
>>> np.hstack((a, b)) #水平拼接,沿着列进行拼接
array([[9., 7., 1., 9.],
[5., 2., 5., 1.]])