我很确定我错过了整数索引,并可以使用一些帮助。说,我创建一个二维数组:numpy数组在多个维度上的整数索引
>>> import numpy as np
>>> x=np.array(range(24)).reshape((4,6))
>>> x
array([[ 0, 1, 2, 3, 4, 5],
[ 6, 7, 8, 9, 10, 11],
[12, 13, 14, 15, 16, 17],
[18, 19, 20, 21, 22, 23]])
我可以选取行1和2与:
>>> x[[1,2],:]
array([[ 6, 7, 8, 9, 10, 11],
[12, 13, 14, 15, 16, 17]])
或行2的第1列和3:
>>> x[[1,2],1]
array([ 7, 13])
所以对我来说,我可以选择第1行和第2行的第3,4和5列:
>>> x[[1,2],[3,4,5]]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: shape mismatch: objects cannot be broadcast to a single shape
,而是我需要做的是在两个步骤:
>>> a=x[[1,2],:]
>>> a
array([[ 6, 7, 8, 9, 10, 11],
[12, 13, 14, 15, 16, 17]])
>>> a[:,[3,4,5]]
array([[ 9, 10, 11],
[15, 16, 17]])
来自R的到来,我的期望似乎是错误的。你能否确认这一步实际上是不可能的,或者建议一个更好的选择?谢谢!
编辑:请注意我在示例中的行和列的选择恰好是连续的,但它们不一定是。换句话说,分片索引不适合我的情况。
你是对的,那个中间拷贝真的让我感到困扰。 Thans很多! – Miquel
不错;我没有意识到这一点! –
我迷失在圆括号中... –