Python 如何在二维数组中保存结果

Python 如何在二维数组中保存结果,python,arrays,Python,Arrays,我有一个Python代码,它创建了一个二维数组,处理并将结果保存在数组中,如: dimension = [32, 64] partition = [10, 20, 30, 40] row = len(dimension) column = len(partition) qpi_partition = [[0 for x in range(column)] for y in range(row)] for d in dimension: for i, j in enumerate(qp

我有一个Python代码,它创建了一个二维数组,处理并将结果保存在数组中,如:

dimension = [32, 64]
partition = [10, 20, 30, 40]

row = len(dimension)
column = len(partition)

qpi_partition = [[0 for x in range(column)] for y in range(row)]

for d in dimension:
   for i, j in enumerate(qpi_partition):
      *do_process*
      for p in partition:
         *result = do_process*
         qpi_partition[i].append(result)
输出为:

[[0,  0,  0,  0,  0.25,  0.32,  0.54,  0.64,  0.78,  0.12,  0.55,  0.21],
[0,  0,  0,  0,  0.25,  0.32,  0.54,  0.64,  0.78,  0.12,  0.55,  0.21]]
但实际上,我想要的是这样的,其中每个维度有四个分区,结果如下:

[[0.25,  0.32,  0.54,  0.64], 
[0.78,  0.12,  0.55,  0.21]]
我的问题是:

(1) 如何创建二维数组并用结果填充它(不初始化其中的零)

(2) 我做错了哪个循环

提前感谢

消除多余的0 Python的
[]
不是数组;这是一张单子。它是动态调整大小的

append
函数完全按照它所说的做;它扩展列表以添加新项

因此,您正在使用0初始化内部列表,然后扩展它们以添加结果。使用索引覆盖0,或者不以这种方式初始化列表(只创建空列表)

不在每一行重复您的结果 您的问题并不完全清楚,但看起来您希望
qpi\u分区
矩阵中的每个条目
(r,c)
对应于某个函数的结果
f(x,y)
,其中
x
维度[r]
y
分区[c]
。换句话说,您从
维度
分区
中获取每一对元素,计算该对上的一些函数,并将其存储在结果结构中

要做到这一点,在结果结构中每个维度应该有一个循环,因为输入是一维的,所以二进制函数成对映射将产生一个二维结构(根据标题,您已经意识到了这一点,即使您不会这样说)。但是你有三个循环

我认为,核心问题是,您正在迭代结果结构(
qpi_分区
)和输入向量。实际上,您应该迭代输入或输出

以下是仅针对输入的版本映射:

qpi_partition = [[0 for x in range(len(partition))] for y in range(len(dimension))]

for d, r in enumerate(dimension):
    for p, c in enumerate(partition):
        result = # Calculate result....
        qpi_partition[r][c]  = result

对我来说,你问的问题很不清楚。@timgeb,我想知道为什么所有的结果都保存在每一行中,其中我想要的是每一行(维度)只有4个结果(分区)小心,挑剔:“Python本机没有数组”@Kyle Strand,你的意思是创建空数组,比如
qpi_partition=[]
?@Lucy不完全是,因为这样你就需要添加内部列表。用空的内部列表初始化它是有意义的:
[[]对于范围(行)中的y)
@timgeb有趣——我没有太多使用Python 3,所以我没有意识到
字节(不在2中)被认为是数组。修正了。@Kyle Strand,谢谢!开始的零已被消除。现在我得到了:
dim_1 0.25 0.32 0.54 0.64 0.78 0.12 0.55 0.21
dim_2 0.25 0.32 0.54 0.64 0.78 0.12 0.55 0.21
但是我是否错误地使用了
enumerate()