2015-02-20 3 views
1

Я пытаюсь создать 2d Numpy массив с помощью генераторов:Как создать массив 2d numpy?

x = [[f(a) for a in g(b)] for b in c] 

И если я пытаюсь сделать что-то вроде этого:

x = np.array([np.array([f(a) for a in g(b)]) for b in c]) 

Я, как и следовало ожидать, получить нп .array of np.array. Но я хочу, не это, но ndarray, так что я могу получить, например, колонки так, как это:

y = x[:, 1] 

Итак, мне любопытно, есть ли способ, чтобы создать его таким образом.

Конечно, это возможно при создании npdarray требуемого размера и заполнении его необходимыми значениями, но я хочу, чтобы это было сделано в строке кода.

+0

И это должно быть выражение генератор? Это не может быть «np.shape» или что-то в этом роде? – ljetibo

+0

Что делать 'f (a)' и 'g (b)' делать точно? Если они производят числа, ваш код должен работать: это правильный способ инициализации массива 2d numpy (numpy, как правило, достаточно умный, чтобы передать массив массива в ndarray) –

+0

Что такое 'data ['Name']' like ? Лучше всего, если вы дадите нам примеры, которые мы можем подключить и запустить. Какова форма 'np._names'? Я не вижу в вашем коде генераторов, просто перечислите их. – hpaulj

ответ

2

Это работает:

a = [[1, 2, 3], [4, 5, 6]] 
nd_a = np.array(a) 

Так это должно работать также:

nd_a = np.array([[x for x in y] for y in a]) 
Смежные вопросы