2013-12-05 3 views
0

У меня есть функция из внешнего пакета, которая возвращает вложенную группу массивов NumPy. Например, из IPython:Как ссылаться на определенное значение в вложенном массиве NumPy?

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

Вы уверены, что этот странный список список Numpy массивов стоит? Вы должны иметь возможность обрабатывать данные в виде массива 2D numpy для многих целей. – Daniel

+0

@Ophion Это часть внешнего пакета. Если бы я сам ее реализовал? Нет. Но так как я не хочу переоценивать эту вещь с нуля, я задерживаюсь сейчас. – Fomite

ответ

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.])] 
+0

Да, это действительно странно, и у меня возникли проблемы с его распаковкой. Но множество индексов работает. Спасибо за вашу помощь. – Fomite

Смежные вопросы