元组作为多维数组的索引

Tuple as index of multidimensional array(元组作为多维数组的索引)
本文介绍了元组作为多维数组的索引的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我发现了一个与我的问题非常相似的问题,但并不完全相同.这个:这里然而,在 ntimes 的情况下,数组的大小与元组所指向的维数相匹配.在我的例子中,我有一个 4 维数组和一个 2 维元组,就像这样:

I found a very similar question to mine, but not exactly the same. This one: here However in ntimes's case the size of the array matches the number of the dimensions the tuple is point at. In my case I have a 4-dimensional array and a 2-dimensional tuple, just like this:

from numpy.random import rand
big_array=rand(3,3,4,5)
tup=(2,2)

我想使用元组作为前两个维度的索引,并手动索引后两个.比如:

I want to use the tuple as an index to the first two dimensions, and manually index the last two. Something like:

big_array[tup,3,2]

但是,我获得了索引 = 2 的第一个维度的重复,沿着第四个维度(因为它在技术上没有被索引).这是因为这个索引解释了对第一个维度的双索引,而不是每个维度的一个值,

However, I obtain a repetition of the first dimension with index=2, along the fourth dimension( since it technically hasn't been indexed). That is because this indexing is interpreting a double indexing to the first dimension instead of one value for each dimension,

eg. 
| dim 0:(index 2 AND index 2) , dim 1:(index 3), dim 2:(index 2), dim 3:(no index)|
instead of 
|dim 0(index 2), dim 1(index 2), dim 2:(index 3), dim 3:(index 2)|.

那我怎样才能解包"这个元组呢?有任何想法吗?谢谢!

How can I 'unpack' this tuple then? Any ideas? thanks!

推荐答案

你也可以单独传入你的第一个元组来获取感兴趣的切片,然后单独索引它:

You can also pass in your first tuple alone to get the slice of interest, then index it seprately:

from numpy.random import rand
big_array=rand(3,3,4,5)
chosen_slice = (2,2)

>>> big_array[ chosen_slice ]
array([[ 0.96281602,  0.38296561,  0.59362615,  0.74032818,  0.88169483],
       [ 0.54893771,  0.33640089,  0.53352849,  0.75534718,  0.38815883],
       [ 0.85247424,  0.9441886 ,  0.74682007,  0.87371017,  0.68644639],
       [ 0.52858188,  0.74717948,  0.76120181,  0.08314177,  0.99557654]])

>>> chosen_part = (1,1)

>>> big_array[ chosen_slice ][ chosen_part ]
0.33640088565877657

对于某些用户来说,这可能更具可读性,但否则我会倾向于 mgilson 的解决方案.

That may be slightly more readable for some users, but otherwise I'd lean towards mgilson's solution.

这篇关于元组作为多维数组的索引的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

how to replace nans by numbers in a multidimensional array in Numba?(如何在Numba中用多维数组中的数字替换NaN?)
Appending to a multidimensional array Python(追加到多维数组Python)
Formatting Multi dimensional arrays Python(格式化多维数组 Python)
Python: remove duplicates from a multi-dimensional array(Python:从多维数组中删除重复项)
How would I sum a multi-dimensional array in the most succinct python?(如何在最简洁的 python 中对多维数组求和?)