【发布时间】:2014-01-30 22:46:45
【问题描述】:
我试图找到一种在循环中不使用 if...else 条件的方法,以便加快代码速度,知道吗?
for i in range(n):
for j in range(n):
if a1[i, j] == 0:
b1[i, j] = 1
else:
b1[i, j] = a1 / np.sin(a1)
if a2[i, j] == 0:
b2[i, j] = 1
else:
b2[i, j] = a2 / np.sin(a2)
【问题讨论】:
-
我认为 if/else 语句不是问题所在。您在 for 循环中有一个 for 循环,我猜这更可能是问题的根源。
-
处理嵌套列表可能会很慢,只是说。
-
逻辑中可能有一些帮助,但是有两个
for循环,无论如何你都会被O(n^2)卡住。 -
我不遵循此代码。看起来
a1是一个数组,因为您使用a1[i,j]对其进行索引,但您随后设置了b1[i,j] = a1/np.sin(a1)。像往常一样,我是否遗漏了一些明显的东西? -
@DSM: like is np 指的是 numpy?
标签: python performance loops numpy