简单问题:在numpy中如何创建多维数组?

3 投票
2 回答
9680 浏览
提问于 2025-04-15 19:37

好的,也许我应该用普通的Python列表来处理这个,但我还是想试试:

我想要一个9行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

这段内容提到的《Tentative NumPy Tutorial》说,你可以用逗号来声明一个二维数组:

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

注意,如果想充分利用numpy的强大功能,使用一个三维的numpy数组会更好。把三维数组拆成二维数组和一维值可能会让你的代码变得复杂,还可能需要用循环,而不是使用numpy自带的函数。

花时间把代码改成使用更高级的三维numpy数组是值得的。

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

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

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

现在你必须把numpy数组的每个元素初始化为一维的numpy数组:

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

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

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

撰写回答