必须有一种更Pythonic的方法:
r = np.arange(100)
results = []
for i in r:
for j in r:
for k in r:
for l in r:
#Here f is some predefined function
if f(i,j,k,l) < 5.0:
results.append(f(i,j,k,l))
我确信使用数组可以以某种方式简化这个过程,我只是不知道如何简化。谢谢!
最佳答案
使用itertools
笛卡尔积:
import itertools
r = np.arange(100)
results = []
for (i,j,k,l) in itertools.product(r,repeat=4):
if f(i,j,k,l) < 5.0:
results.append(f(i,j,k,l))
或者更紧凑的方式,使用列表理解:
[ f(i,j,k,l) for (i,j,k,l) in itertools.product(r,repeat=4) if f(i,j,k,l) < 5.0 ]
关于python - 使用 numpy 数组避免 for 循环 - 组合学,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38546628/