python - 多维数组的索引

标签 python numpy multidimensional-array indexing scipy

我在使用多维向量作为多维向量的索引时遇到问题。假设我有 C.ndim == idx.shape[0],那么我希望 C[idx] 给我一个元素。让我用一个简单的例子来解释一下:

A = arange(0,10)
B = 10+A
C = array([A.T, B.T])
C = C.T
idx = array([3,1])

现在,C[3] 给我第三行,C[1] 给我第一行。然后 C[idx] 会给我一个包含两行的 vstack。但是,我需要得到 C[3,1]。我如何实现给定的数组 C,idx?

/编辑: 答案建议元组(idx)。这项工作非常适合单个 idx。但: 让我们更进一步:假设 INDICES 是一个向量,我在其中垂直堆叠了形状 idx 的数组。 tuple(INDICES) 会给我一个长元组,所以 C[tuple(INDICES)] 不起作用。有没有一种干净的方法可以做到这一点,或者我需要迭代行吗?

最佳答案

如果将 idx 转换为 tuple,它将被解释为基本索引,而不是高级索引:

>>> C[3,1]
13
>>> C[tuple(idx)]
13

对于向量情况:

>>> idx
array([[3, 1],
       [7, 0]])
>>> C[3,1], C[7,0]
(13, 7)
>>> C[tuple(idx.T)]
array([13,  7])
>>> C[idx[:,0], idx[:,1]]
array([13,  7])

关于python - 多维数组的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19891101/

相关文章:

Python - 如何对由或/和运算符分隔的变量进行分组

php - 如何将二维数组放入php中的mysql_query

python - 如何修复编译器错误: cannot convert to a pointer type with Cython + numpy?

Python:numpy.genfromtxt - 需要包含无效字符的列名

python-3.x - Numpy 安装损坏的工具链 : cannot link a simple C program

c - 根据 C 中二维数组中列中的值重新排列行

将多维数组转换为另一种类型的多维数组

Python setup.py 在 egg 中包含 .json 文件

python - 每次调用函数时,子模块内的全局变量都会重新加载吗?

python - 如何比较字典中的键并查看一个键是否包含另一个键?