gpt4 book ai didi

python - Python定义二维数组的耗时

转载 作者:太空宇宙 更新时间:2023-11-03 15:53:15 25 4
gpt4 key购买 nike

我想定义一个大小为 [545 333][116 109] 的二维数组以及初始化代码的下一部分我使用以下代码

w1, h1 = 545333, 116109
X = [[0 for x1 in range (w1)] for y1 in range (h1)]
while (i <116109):
###### other code...........
j = 0
while (j <545333):
if allfeature [j] not in eachfeature:
X [i] [j] = 0
else:
X [i] [j] = 1
j = j + 1
i=i+1

但问题是时间长,速度慢。您推荐什么代码?

最佳答案

FWIW,

X = [[0] * w1 for y1 in range (h1)]

X = [[0 for x1 in range (w1)] for y1 in range (h1)]

并产生相同的结果。但对于 w1, h1 = 545333, 116109,您没有足够的 RAM 来创建该列表。

更好的选择是让 X 成为一组元组,如果 allfeature[j] in everyfeature 仅适用于较小的情况,那么您可能有足够的 RAM 来实现这一点。 range(w1)j 值的数量。

这是一个简短的演示:

w1, h1 = 545333, 116109
X = set()
for j in range(w1):
if allfeature[j] in eachfeature:
for i in range(h1):
X.add((i, j))

但是,由于 h1 的大小,即使这样也会使用相当多的 RAM。正如 Peter Wood 所说,可能有更好的方法来组织代码的数据和逻辑。

<小时/>

您在答案中发布的代码没有达到您想要的效果。但即使您确实有足够的 RAM 来创建该列表,它也不会包含您想要的数据,因为所有内部列表实际上都是相同的列表。

这是该行为的一个小演示:

x = []
x1 = [0, 9]
for i in range(5):
x1[0] = i
x.append(x1)
print(x)

输出

[[4, 9], [4, 9], [4, 9], [4, 9], [4, 9]]

相反,您需要附加 x1副本,如下所示:

x = []
x1 = [0, 9]
for i in range(5):
x1[0] = i
x.append(x1[:])
print(x)

输出

[[0, 9], [1, 9], [2, 9], [3, 9], [4, 9]]

关于python - Python定义二维数组的耗时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41055696/

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