Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 多维数组索引_Python_Numpy_Multidimensional Array_Indexing_Scipy - Fatal编程技术网

Python 多维数组索引

Python 多维数组索引,python,numpy,multidimensional-array,indexing,scipy,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的情况下,如何实现这一点 /编辑:

我在使用多维向量作为多维向量的索引时遇到了一个问题。假设我有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。但是:
让我们进入下一个层次:假设索引是一个向量,其中我垂直堆叠了形状idx的数组。tuple(index)将给我一个长tuple,所以C[tuple(index)]将不起作用。有没有一种干净的方法可以做到这一点,或者我需要对行进行迭代?

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

>>> 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])

完美的让我们进入下一个层次:假设索引是一个向量,其中我垂直堆叠了形状idx的数组。tuple(index)将给我一个长tuple,所以C[tuple(index)]将不起作用。有没有一种干净的方法可以做到这一点,或者我需要在行上进行迭代?
C[index[0],index[1]
将按照您的描述进行操作,就像
C[tuple(index.T)]
一样。我打算推荐
tuple(index.T)
。但是,它不需要是
C[index[:,0],index[:,1]]
?还是像往常一样,我脑子里的东西转错了?是的,我想你是对的,我的两个答案肯定不一致,第二个似乎是对的。正如詹姆所说,每一行都有一组索引。所以包含[0],。。。这是正确的。然而,tuple(index.T)给了我一个包含2个元素的tuple,其中包含N个项目(其中N是行数)。C[tuple(INCIDES.T)然后给出索引器:用作索引的数组必须是整数(或布尔)类型。另一方面,tuple(x)给出了2个索引中的N个“子元组”,这到目前为止是正确的(我猜)。然而,C[tuple(x)]将给我索引器:太多的索引。