我在使用python 2.7访问多维numpy-array中的数据时遇到问题。目标是读取位置存储在列表中的多个值。
import numpy as np
matrix=np.ones((10,30,5))
positions=[]
positions.append([1,2,3])
positions.append([4,5,6])
for i in positions:
print matrix[i]
我想要的是:
print matrix[1,2,3]
但我明白了:
print [matrix[1], matrix[2], matrix[3]]
您能否给我一个正确索引的提示?谢谢!
答案 0 :(得分:4)
在Python中,
x[(exp1, exp2, ..., expN)]
相当于x[exp1, exp2,..., expN];
后者只是前者的语法糖。
因此,不是将列表传递给它,而是将元组传递给matrix
:
for i in positions:
print matrix[tuple(i)]
列表用于挑选特定指数的项目,即index arrays:
>>> arr = np.random.rand(10)
>>> arr
array([ 0.56854322, 0.21189256, 0.72516831, 0.85751778, 0.29589961,
0.90989207, 0.26840669, 0.02999548, 0.65572606, 0.49436744])
>>> arr[[0, 0, 5, 1, 5]]
array([ 0.56854322, 0.56854322, 0.90989207, 0.21189256, 0.90989207])