我有一个来自外部包的函数,它返回一组嵌套的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个数组的最后一个值。但是每次我想引用某些东西时,我真的不喜欢制作一大堆变量 - 是否有一种干净的方式来引用这样的嵌套数组的特定内部部分?
答案 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.])]