我倾向于用括号对numpy数组(矩阵)进行索引,但我注意到,当我想对数组(矩阵)进行切片时,我必须使用逗号符号。为什么会这样呢?例如,
>>> x = numpy.array([[1, 2], [3, 4], [5, 6]])
>>> x
array([[1, 2],
[3, 4],
[5, 6]])
>>> x[1][1]
4 # expected behavior
>>> x[1,1]
4 # expected behavior
>>> x[:][1]
array([3, 4]) # huh?
>>> x[:,1]
array([2, 4, 6]) # expected behavior发布于 2016-06-30 04:34:03
这是:
x[:, 1]意思是“沿第一轴取x的所有指标,但沿第二轴只取索引1”。
这是:
x[:][1]意思是“沿着第一个轴取x的所有索引(所以所有的x),然后沿着结果的第一个轴取索引1”。您正在将1应用到错误的轴上。
x[1][2]和x[1, 2]只是等价的,因为用整数索引数组会将所有剩余的轴移到形状的前面,因此x[1]的第一个轴是x的第二个轴。这一点都不概括;您几乎应该始终使用逗号,而不是多个索引步骤。
https://stackoverflow.com/questions/38113994
复制相似问题