多维Python数组的动态访问

时间:2011-10-17 03:41:08

标签: python numpy

我是一个蟒蛇新手。我对如何动态访问数组元素感到困惑。

我有一个动态获得的列表b = [1,2,5,8],所以它的长度可以变化。借助此列表,我需要将多维数组更新为mArr [1] [2] [5] [8]。列表和数组维度的长度与示例

中给出的匹配

基本上,我正在寻找一种技术来访问关于列表“b”的多维数组,如:marr [b]。这个m数组也是动态创建的。

我试着查看numpy的教程但是没有弄清楚解决方案。我错过了什么?

提前致谢。

2 个答案:

答案 0 :(得分:2)

如果尺寸为[1,2,5,8],则可以为每个尺寸使用数字0, 0..1, 0..4, 0..7

Numpy允许您使用元组访问位置:

shape = [1, 2, 5, 8]
pos = [0, 1, 1, 3]

my_array = np.ones(shape)
my_array[tuple(pos)] # will return 1

答案 1 :(得分:1)

您可以创建一个类似的函数:

def array_update(b, marr, value):
  if len(b) > 1:
    return array_update(b[1:], marr[b[0]], value)
  marr[b[0]] = value

给定b = [1,2,5,8],要将mArr [1] [2] [5] [8]的值设置为foo,您可以调用:

array_update(b, mArr, 'foo')