如何在嵌套的NumPy数组中引用特定值?

时间:2013-12-05 19:47:17

标签: python python-2.7 numpy

我有一个来自外部包的函数,它返回一组嵌套的NumPy数组。例如,来自IPython:

In [28]: out = Function()

In [29]: out
Out[29]: 
[[array([ 1.,  1.,  0.,  1.,  0.])],
 [array([ 4.,  4.,  5.,  4.,  5.])],
 [array([ 3.,  1.,  0.,  0.,  1.])],
 [array([ 3.,  6.,  1.,  6.,  4.])],
 [array([ 3.,  0.,  1.,  1.,  1.])],
 [array([  3.,  17.,  10.,  25.,  23.])],
 [array([ 0.,  0.,  0.,  0.,  0.])],
 [array([ 0.,  0.,  0.,  0.,  0.])],
 [array([ 0.,  4.,  2.,  5.,  3.])],
 [array([ 0.,  0.,  2.,  2.,  2.])],
 [array([ 0.,  0.,  0.,  0.,  0.])],
 [array([ 0.,  0.,  0.,  0.,  0.])],
 [array([ 0.,  0.,  0.,  0.,  0.])],
 [array([  0.,   1.,   6.,  11.,  15.])]]

我可以指定类似的内容:

In [30]: a = out[9]

In [31]: a
Out[31]: [array([ 0.,  0.,  2.,  2.,  2.])]

最后:

In [32]: b = a[0]

In [33]: b[-1]
Out[33]: 2.0

获取来自该数组的特定值 - 即函数输出中第9个数组的最后一个值。但是每次我想引用某些东西时,我真的不喜欢制作一大堆变量 - 是否有一种干净的方式来引用这样的嵌套数组的特定内部部分?

1 个答案:

答案 0 :(得分:2)

这是一个形状奇特的对象:它是一个1元素列表的列表,其元素是1D numpy数组。所以我们需要三个指数:

>>> out[9]
[array([ 0.,  0.,  2.,  2.,  2.])]
>>> out[9][0]
array([ 0.,  0.,  2.,  2.,  2.])
>>> out[9][0][-1]
2.0

如果我们想修改它也会起作用:

>>> out[9][0][-1] *= 100
>>> out[9][0][-1]
200.0
>>> out[9]
[array([   0.,    0.,    2.,    2.,  200.])]