numpy是Python中最常见的矩阵操作工具。有时候,我们需要从一个大矩阵中读取一个小矩阵,则需要用一些索引技巧。
我们看一个例子:
import numpy as npa = np.array([[1, 2, 3],[4, 5, 6],[7, 8, 9]])b = a[:, 0]
print(b)
# [1 4 7]c = a[..., 0]
# [1 4 7]
这里的":“表示一整维度。而”…"表示除了明确列以外的所有维度。
跟直观一样,":“更加具体,而”…"比较泛指。
import numpy as npa = np.random.randn(3,3,3)b = a[:, :, 0]
print(b)c = a[..., 0]
print(c)print(b == c)
# [[ True True True]
# [ True True True]
# [ True True True]]
扩展到三维,我们就可以看到"…“可以代替两个”:"。
–
":"的具体还体现在,它能明确指定一个维度里的部分索引。比如:
import numpy as npa = np.random.randn(3,3,3)b = a[0:2, 0:2, :]
print(b.shape)
# (2, 2, 3)