python - 使用 numpy 数组避免 for 循环 - 组合学

标签 python arrays numpy

必须有一种更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/

相关文章:

Python 日期时间

python - 用numpy计算xlogx

Python - 列表理解与测试以避免被零除

python - 如何从 np.datetime64 中提取小时/分钟/秒

python - virtualenvwrapper 失败并显示 "No module named Help2Man"

python - 在 NumPy 中提取浮点有效数和指数

python - 获取numpy数组的对角线

Javascript 函数将输入值添加到数组,然后在第五次提交后生成列表

c - MPI 动态分配数组

python - 如何获得与 SciPy 稀疏矩阵中特定行对应的向量的范数?