как преобразовать 2d список в 2d массив numpy?


85

У меня есть 2D-список вроде

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

и я хочу преобразовать его в массив 2d numpy. Можем ли мы сделать это без выделения памяти, например

numpy.zeros((3,3))

а затем сохранить в нем значения?


@Donkopotamus, это была моя ошибка ... Я давал последовательность ... Я делал то же самое, но получал ошибку. Получив тот же код отсюда, я проверил, где находится проблема ... Так что это помогает ... конечно, я проверяю документацию, прежде чем размещать здесь ... Спасибо за дружеское напоминание.
Шан

Ответы:


90

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

a = np.array(a)

Вы также можете воспользоваться этой возможностью, чтобы установить, dtypeесли значение по умолчанию не соответствует вашему желанию.

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

109
это решение не работает. вы получите большой массив списков Python.
user1816847 01

49
@ user1816847 Это происходит только тогда, когда «подсписки» различаются по длине (например: [[1,2], [1,2], [1,2,3]]. Это действительно работает с примером, приведенным в вопросе.
compie

5
Если подмассивы не имеют одинаковой длины, это решение даст вам только массив списков numpy (т.е. внутренние списки не будут преобразованы в массивы numpy). Это имеет смысл, поскольку у вас не может быть 2D-массива (матрицы) с переменным 2-м измерением.
AHA

Спасибо с сентября 2017 года (Ubuntu 16.04 LTS). Это то, что мне было нужно. Намного проще, чем предполагалось.
SDsolar

1
Спасибо за важный ответ, @compie
iedmrc 03

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.shape

c.ndim


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.