gpt4 book ai didi

python - 如何使用 For 循环或矢量化在 Python 中定义大型列表数组?

转载 作者:太空狗 更新时间:2023-10-30 00:47:50 26 4
gpt4 key购买 nike

我有一个 416 行的二维列表,每行有 4 列。第 1-4 行包含其行号 4 次(即 [...[1,1,1,1],[2,2,2,2]...]。第 330 行包含 [41,22,13,13]。其他所有内容都是 [0,0,0,0]。目前我正在使用带有许多显式 if 语句的 for 循环.

myList = [[0,0,0,0]]
for i in range(1, 416):
if i == 1 or i == 2 or i == 3 or i == 4:
myList.append([i,i,i,i])
elif i == 330:
myList.append([41,22,13,13])
else:
myList.append([0,0,0,0])

我定义这个数组的更有效方法是什么?

我在 SO 上看到的其他问题似乎没有明确解决这个问题,但如果有人发现一个可以被认为是重复的问题,请将这个问题标记为这样,我会接受它。

最佳答案

由于列表的大部分是零的子列表(在数组术语中,稀疏),我将只进行预分配,然后使用切片分配/索引来更新:

my_list = [[0, 0, 0, 0] for _ in range(416)]
my_list[330] = [41,22,13,13]
my_list[1:5] = [[i]*4 for i in range(1, 5)]

这避免了对大量错误案例和重复追加的重复分支评估。

OTOH,如果您实际上将数据结构保持为稀疏矩阵,则可以避免内存中到处都是零。你可以看看 SciPy 2-D sparse matrix package .

关于python - 如何使用 For 循环或矢量化在 Python 中定义大型列表数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45060825/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com