【发布时间】:2023-12-11 23:51:01
【问题描述】:
我在 csv 中有这个 4x10 (nxm) 数据矩阵:
1, 5, 19, 23, 7, 51, 18, 20, 35, 41
15, 34, 17, 8, 11, 93, 13, 46, 3, 10
1, 2, 3, 4, 5, 6, 7, 8, 9, 10
10, 9, 8, 7, 6, 5, 4, 3, 2, 1
首先,我尝试从第一行 n/2 中获取所有可能总和的列表。剩下最后的n/2 行我也这样做。
在所有可能的第一行总和下,我的意思是:
示例:
第 1 行:1, 2, 3
第 2 行:3, 2, 1
所有可能的总和列表:1 + [3, 2, 1]; 2 + [3, 2, 1]; 3 + [3, 2, 1]
最终名单:[4, 3, 2, 5, 4, 3, 6, 5, 4]
(目前我不想删除重复项)
对于我的逻辑,我有这个代码:
import csv
def loadCsv(filename):
lines = csv.reader(open(filename, "rb"))
dataset = list(lines)
for i in range(len(dataset)):
dataset[i] = [float(x) for x in dataset[i]]
return dataset
data = loadCsv('btest2.txt')
divider = len(data)/2
firstPossibleSumsList = []
secondPossibleSumsList = []
#Possible sum list for the first n/2 rows:
for i in range(len(data[0])):
for j in range(len(data[0])):
firstPossibleSumsList.append(data[0][i] + data[1][j])
#Possible sum list for the last n/2 rows:
for i in range(len(data[0])):
for j in range(len(data[0])):
secondPossibleSumsList.append(data[2][i] + data[3][j])
问题是我使用data[0][i]、data[1][i]、data[2][i] 等手动划分行。我想通过涉及divider 变量来更有效地做到这一点,但我不知道怎么做。在我的代码中,我依赖整数 0, 1, 2, 3,但我想将矩阵行分成两半,而不考虑矩阵尺寸。
【问题讨论】:
-
我可以编辑我的答案,具体取决于您计划如何治疗,例如。
6x10矩阵,因为这将决定外循环的外观。您是否也尝试将第三行与第一行和第二行相加? -
@M.T 是否有可能实现适用于任何指定行数的逻辑?如果矩阵中的总行数分别为 4、6、8 或 10,我可能需要获取 2、3 的所有可能的总和列表,或者可能是 4 或 5 行(因为我试图获得一半的总和列表一些矩阵)。例如,我可以提供 6x10 矩阵而不是提供 4x10 矩阵,它仍然返回前 3 行(而不是 2 行)的所有可能总和列表。