简单的问题:在numpy中你如何制作一个多维数组的数组?

时间:2010-02-23 14:05:04

标签: python arrays multidimensional-array numpy

是的,也许我应该使用正常的Python列表,但是这里是:

我想要一个9 x 4多维数组/矩阵(无论如何)我想要存储数组。这些数组将是1维的,长度为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 个答案:

答案 0 :(得分:8)

请注意,要充分利用numpy的全部功能,使用3维numpy数组会更好。将3-d阵列拆分为具有1-d值的2-d阵列 可能会使您的代码复杂化并迫使您使用循环而不是内置的numpy函数。

可能值得花时间重构代码以使用优质的3-d numpy数组。

但是,如果那不是一个选项,那么:

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

通过将dtype设置为'object',我们告诉numpy允许storageMatrix的每个元素都是任意Python对象。

现在你必须将numpy数组的每个元素初始化为1-d numpy数组:

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

然后你可以像这样访问数组元素:

storageMatrix[column,row][0] = 1
storageMatrix[column,row][4092] = 2

答案 1 :(得分:0)

Tentative NumPy Tutorial表示您可以使用逗号运算符声明2D数组:

x = ones( (3,4) )

并像这样索引到2D数组中:

>>> 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]])