2013-05-27 1 views
1

Я получил список 2x1 массивов, содержащих x, y координат. Так выглядит [np.array([x,y]), np.array([x,y]), np.array([x,y]), ...]Захватить все значения x из многоуровневого массива? Python

Теперь я хочу список или массив, который будет содержать все значения x и один для всех значений y. Но делать такие вещи, как list[:][1], не работает.

Любая идея о том, как это сделать?

+0

возможно дубликат [Numpy массива нарезка unxpected результаты] (http://stackoverflow.com/questions/16627891/numpy -array-slicing-unxpected-results) – BrenBarn

+2

Могу ли я спросить, как вы оказались с этой структурой данных? Если у вас есть контроль над ним и вы можете использовать 2D-массив, тогда будет работать 'x, y = list_2d.T'. – DSM

ответ

3
>>> import numpy as np 
>>> L = [np.array([1, 2]), np.array([3, 4]), np.array([5, 6])] 
>>> X = [a[0] for a in L] 
>>> Y = [a[1] for a in L] 
>>> X 
[1, 3, 5] 
>>> Y 
[2, 4, 6] 

Как отмечалось @DSM, вы можете перенести список, а также:

>>> X, Y = map(list, zip(*L)) 
>>> X 
[1, 3, 5] 
>>> Y 
[2, 4, 6] 
+0

Другим вариантом является 'X = map (lambda a: a [0], L)'. – ValarDohaeris

+0

Или старый 'X, Y = zip (* L)' трюк, по крайней мере, если количество кортежей было достаточным. – DSM

+0

@DSM представить, что в качестве ответа лучше – jamylak

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