Простой вопрос: в numpy, как вы делаете многомерный массив массивов? - PullRequest
3 голосов
/ 23 февраля 2010

Правильно, возможно я должен использовать обычные списки Python для этого, но здесь идет:

Мне нужен многомерный массив 9/4 (независимо от того, что на самом деле), в котором я хочу хранить массивы. Эти массивы будут одномерными и имеют длину 4096.

Итак, я хочу быть в состоянии что-то вроде

column = 0                                    #column to insert into
row = 7                                       #row to insert into
storageMatrix[column,row][0] = NEW_VALUE
storageMatrix[column,row][4092] = NEW_VALUE_2
etc..

Я ценю, что мог бы делать что-то немного глупое / ненужное здесь, но мне будет ОЧЕНЬ легче сделать так, чтобы это было структурировано в моем коде (как это много, и много анализа будет сделано позже) ).

Спасибо!

Ответы [ 2 ]

8 голосов
/ 23 февраля 2010

Обратите внимание, что для того, чтобы использовать всю мощь NumPy, вам будет гораздо лучше с 3-мерным NUMPY массивом. Разбиение трехмерного массива на двумерный массив с однозначными значениями может усложнить ваш код и заставить вас использовать циклы вместо встроенных функций numpy.

Возможно, стоит потратить время на рефакторинг вашего кода, чтобы использовать превосходные трехмерные массивы.

Однако, если это не вариант, то:

import numpy as np
storageMatrix=np.empty((4,9),dtype='object')

Устанавливая dtype в 'object', мы сообщаем numpy, что каждый элемент storageMatrix может быть произвольным объектом Python.

Теперь вы должны инициализировать каждый элемент массива numpy, чтобы он представлял собой 1-й массив numpy:

storageMatrix[column,row]=np.arange(4096)

И тогда вы можете получить доступ к элементам массива следующим образом:

storageMatrix[column,row][0] = 1
storageMatrix[column,row][4092] = 2
0 голосов
/ 23 февраля 2010

В предварительном учебнике NumPy говорится, что вы можете объявить 2D-массив с помощью оператора запятой:

x = ones( (3,4) )

и индексировать в двумерный массив следующим образом:

>>> x[1,2] = 20
>>> x[1,:]                             # x's second row
array([ 1,  1, 20,  1])
>>> x[0] = a                           # change first row of x
>>> x
array([[10, 20, -7, -3],
       [ 1,  1, 20,  1],
       [ 1,  1,  1,  1]])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...