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

时间:2017-04-18 12:52:22

标签: 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(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)我做错了哪个循环?

提前谢谢

1 个答案:

答案 0 :(得分:1)

消除多余的0

Python var list1 = []; $("#ListVideo td div a").each((index, element) => { list1.push($(element).attr("href")); }); console.log(list1); 不是数组;这是一个清单。它是动态大小的。

[]函数正如它所说的那样;它扩展了列表以添加新项目。

因此,您正在使用0&s初始化内部列表,然后扩展以添加结果。使用索引来覆盖 0,或者不要那样初始化你的列表(只创建空列表)。

不在每行重复您的结果

您的问题并不完全清楚,但看起来您希望append矩阵中的每个条目(r,c)都与某个函数qpi_partition的结果相对应,其中f(x,y)xdimension[r]y。换句话说,您从partition[c]dimension获取每对元素,计算该对上的某些函数,并将其存储在结果结构中。

要做到这一点,你的结果结构中每个维度应该有一个循环,并且由于你的输入是一维的,你的二元函数成对映射将产生一个二维结构(根据标题,你已经意识到,即使你不会这样说的话)。但你有三个循环!

我认为,核心问题是您正在迭代结果结构(partition您的输入向量。实际上,您应该遍历 输入输出。

这里只是一个版本映射输入:

qpi_partition