在 NumPy 中使用 2 个维度进行索引时出错
Error when indexing with 2 dimensions in NumPy
为什么这样做:
>>> (tf[:,[91,1063]])[[0,3,4],:]
array([[ 0.04480133, 0.01079433],
[ 0.11145042, 0. ],
[ 0.01177578, 0.01418614]])
但这不是:
>>> tf[[0,3,4],[91,1063]]
IndexError: shape mismatch: indexing arrays could not be broadcast together with shapes (3,) (2,)
我做错了什么?
tf[:,[91,1063]])[[0,3,4],:]
分 2 步操作,首先 selecting 2 列,然后从该结果中提取 3 行
tf[[0,3,4],[91,1063]]
尝试 select tf[0,91]
、tf[3,1063]
和 ft[4, oops]
。
tf[[[0],[3],[4]], [91,1063]]
应该可以,给出与第一个表达式相同的结果。将第一个列表视为一列,selecting 行。
tf[np.array([0,3,4])[:,newaxis], [91,1063]]
是另一种生成列索引数组的方法
tf[np.ix_([0,3,4],[91,1063])]
np.ix_
可以帮助生成这些索引数组。
In [140]: np.ix_([0,3,4],[91,1063])
Out[140]:
(array([[0],
[3],
[4]]), array([[ 91, 1063]]))
这些列和行数组一起广播以产生一个二维坐标数组
[[(0,91), (0,1063)]
[(3,91), ... ]
.... ]]
这是文档的相关部分:http://docs.scipy.org/doc/numpy/reference/arrays.indexing.html#purely-integer-array-indexing
我基本上是在重复我对
的回答
为什么这样做:
>>> (tf[:,[91,1063]])[[0,3,4],:]
array([[ 0.04480133, 0.01079433],
[ 0.11145042, 0. ],
[ 0.01177578, 0.01418614]])
但这不是:
>>> tf[[0,3,4],[91,1063]]
IndexError: shape mismatch: indexing arrays could not be broadcast together with shapes (3,) (2,)
我做错了什么?
tf[:,[91,1063]])[[0,3,4],:]
分 2 步操作,首先 selecting 2 列,然后从该结果中提取 3 行
tf[[0,3,4],[91,1063]]
尝试 select tf[0,91]
、tf[3,1063]
和 ft[4, oops]
。
tf[[[0],[3],[4]], [91,1063]]
应该可以,给出与第一个表达式相同的结果。将第一个列表视为一列,selecting 行。
tf[np.array([0,3,4])[:,newaxis], [91,1063]]
是另一种生成列索引数组的方法
tf[np.ix_([0,3,4],[91,1063])]
np.ix_
可以帮助生成这些索引数组。
In [140]: np.ix_([0,3,4],[91,1063])
Out[140]:
(array([[0],
[3],
[4]]), array([[ 91, 1063]]))
这些列和行数组一起广播以产生一个二维坐标数组
[[(0,91), (0,1063)]
[(3,91), ... ]
.... ]]
这是文档的相关部分:http://docs.scipy.org/doc/numpy/reference/arrays.indexing.html#purely-integer-array-indexing
我基本上是在重复我对