Python 如何在二维数组中保存结果
我有一个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
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()
?