gpt4 book ai didi

python - 在python中高效读取数组

转载 作者:太空宇宙 更新时间:2023-11-03 23:57:00 24 4
gpt4 key购买 nike

我有一个 4 维数组 L。L.shape = [31, 13, 250, 501]

我需要执行使用不同元素的操作。

方法一:

for i1 in range(31):
for i2 in range(15):
for i3 in range(250):
for i4 in range(501):
L[i1, i2, i3, i4] # some operations involving this element

方法二:

for i2 in range(15):
for i1 in range(31):
for i4 in range(501):
for i3 in range(250):
L[i1, i2, i3, i4] # some operations involving this element

执行速度是否取决于 for 循环的嵌套方式?

最佳答案

注意模式

for i in range(a):
for j in range(b):
#do stuff

涉及调用 range()函数 a+1次。如果a > b ,这将比

效率低
for j in range(b):
for i in range(a):
#do stuff

你可以解决这个问题

for i in range(a):
for j in range(b):
for k in range(c):
for l in range(d):
#do stuff

调用范围函数1 + a + a*b + a*b*c很多次,当 a <= b <= c <= d 时最小化.在你的例子中,你可以计算出最有效和最低效的循环方式之间的差异(通过范围调用的次数来衡量)大约是 34 倍,这比我最初预期的要多。这并不意味着一种方法比另一种方法快 34 倍。在典型的代码中,无论您如何管理簿记,最内层循环的主体都支配着执行时间。

说了这么多,切换到NumPy (如果您尚未使用它)可能是使代码快速运行的最佳方法。

关于python - 在python中高效读取数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57325536/

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