【问题标题】:Initialize multidimensional array in python在python中初始化多维数组
【发布时间】:2017-05-14 23:23:49
【问题描述】:

我正在从 c 迁移到 python。

我要初始化一个不同长度的数组:map((2,3,(5,6,7)))

我希望数组np.zeros((2,3)) 的每个条目都是不同长度的列表。

我想要相当于c的python:

for(ii=0; ii<N; ii++) {
    dim[ii] = ii**2;
    for(jj=0; jj<Z; jj++) {
        map[jj][ii] = (long*) calloc(dim[ii], sizeof(long));
    }
}

我已经尝试了几件事,但没有一个是我需要的。我想稍后轻松访问数据并使用我没有设法访问的列表。

谢谢!

【问题讨论】:

  • np.zeros 需要一个定义的大小,所以你不能(据我所知)使用可变长度。你能创建一个不同长度的列表吗?这是用于计算量大的东西吗?
  • 我不是 C 人,您能否在 `n=2 和 z=3` 或一些随机的 nz 中添加所需输出数组的概述?跨度>
  • 我尝试使用列表列表,但在访问数据时遇到问题。数组的长度很大(12*4096*4096)是最大的列表。所需的输出将是: map=[ [[0],[0,0,0,0],[0,0,0,0,0,0,0,0]] , [[0],[0 ,0,0,0],[0,0,0,0,0,0,0,0]] ]

标签: python arrays list multidimensional-array


【解决方案1】:

我已经做到了:

>>> x=[[0]*3 for count in range(2)]
>>> for ii in range(2):
...     for jj in range(3):
...         x[ii][jj]=[0]*(jj+1)**2
... 
>>> x
[[[0], [0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0]], [[0], [0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0]]]

虽然我确信有更好的方法,但谢谢!

【讨论】:

    猜你喜欢
    • 2015-08-01
    • 1970-01-01
    • 2012-04-14
    • 2010-11-07
    • 1970-01-01
    相关资源
    最近更新 更多