як перетворити 2d список у 2d масив numpy?


84

У мене є 2D-список приблизно такого типу

a = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] 

і я хочу перетворити його на 2d масив numpy. Чи можемо ми це зробити, не виділяючи пам’яті типу

numpy.zeros((3,3))

а потім зберігати в ній значення?


@ Donkopotamus, Це була моя помилка ... Я давав послідовність ... Я робив те саме, але отримував помилку. Після того, як я отримав той самий код звідси, я перевірив, де проблема ... Тож це допомагає ... звичайно, я перевіряю документацію, перш ніж розміщувати тут ... Дякую за дружнє нагадування.
Шань,

Відповіді:


89

Просто передайте список np.array:

a = np.array(a)

Ви також можете скористатися цією можливістю, щоб встановити, dtypeякщо значення за замовчуванням не те, що ви бажаєте.

a = np.array(a, dtype=...)

104
це рішення не працює. ви отримаєте numpy-масив списків python.
user1816847

45
@ user1816847 Це трапляється лише тоді, коли списки "під" відрізняються за довжиною (наприклад: [[1,2], [1,2], [1,2,3]]. Це справді працює з прикладом, наведеним у питанні.
compie

5
Якщо підмасиви не мають однакової довжини, це рішення надасть вам лише числовий масив списків (тобто внутрішні списки не будуть перетворені в масиви numpy). Що цілком має сенс, оскільки ви не можете мати 2D-масив (матрицю) із змінною 2-ї мірності.
AHA

Дякуємо з вересня 2017 року (Ubuntu 16.04 LTS). Це те, що мені потрібно було. Набагато простіше, ніж передбачалося.
SDsolar

1
Дякую за важливу відповідь, @compie
iedmrc

2

Я використовую великі набори даних, експортовані у файл python у формі

XVals1 = [.........] 
XVals2 = [.........] 

Кожен список має однакову довжину. я використовую

>>> a1 = np.array(SV.XVals1)

>>> a2 = np.array(SV.XVals2)

Тоді

>>> A = np.matrix([a1,a2])

Що тут "SV"
gocen

2

просто використовуйте наступний код

c = np.matrix([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
matrix([[1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]])

Тоді це дасть вам

Ви можете перевірити форму і розмір матриці, використовуючи наступний код

c. форма

c.dim


2

np.array()є навіть потужнішим, ніж те, що сказано вище. Ви також можете використовувати його для перетворення списку np-масивів у масив вищої розмірності, ось простий приклад:

aArray=np.array([1,1,1])

bArray=np.array([2,2,2])

aList=[aArray, bArray]

xArray=np.array(aList)

Форма xArray дорівнює (2,3), це стандартний масив np. Ця операція дозволяє уникнути програмування циклу.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.