numpy 一维数组与 python 列表类似,略。本文主要讨论多维数组的处理。
索引
1 | In [1]: from numpy import * |
此时,np 数组与 python list 的区别如下:
1 | In [5]: a[0][1][1] == a[0, 1, 1] |
这两种语法是等价的,但是 python list 是不支持后一种的。
切片
以下是对比,注意 shape 的变化:
1 | In [9]: a[0:3][1] |
组合&分割
1 | In [7]: b = arange(12, 24).reshape(3,2,2) |
两个主要函数:stack 以及 concatenate。
stack 用于堆叠
1 | In [33]: stack((a, b)) |
concatenate 用于连接
1 | In [46]: concatenate((a,b)) |
连接与堆叠的区别简单理解就是:连接增加了形状,堆叠增加了维度。
1 | In [55]: concatenate((a,b), axis=3) |
可以看到,axis=3 不存在,因此 concatenate 会包报错,所以,可以增加一个维度,再进行 concatenate 操作:
1 | In [57]: concatenate((a[...,newaxis],b[...,newaxis]), axis=3) |
concatenate 有几个快捷方法:
1 | vstack(tup) : concatenate(tup, axis = 0) |
如果 tup 中数组维度不够,则 hstack 或者 dstack 会自动增加维度。
分割就是 concatenate 的逆操作
split <——> concatenate
split 同样有几个快捷函数:
vsplit(ary, indices_or_sections) : split(ary, indices_or_sections, axis=0)
hsplit(ary, indices_or_sections) : split(ary, indices_or_sections, axis=1)
dsplit(ary, indices_or_sections) : split(ary, indices_or_sections, axis=2)