scl*_*cls 7 python arrays numpy scipy python-itertools
以下代码
import numpy as np
import itertools
a_p1 = np.arange(0, 4, 1)
a_p2 = np.arange(20, 25, 1)
params = itertools.product(a_p1, a_p2)
for (p1, p2) in params:
print(p1, p2)
Run Code Online (Sandbox Code Playgroud)
输出
(0, 20) (0, 21) (0, 22) (0, 23) (0, 24) (1, 20) (1, 21) (1, 22) (1, 23) (1, 24) (2, 20) (2, 21) (2, 22) (2, 23) (2, 24) (3, 20) (3, 21) (3, 22) (3, 23) (3, 24)
Run Code Online (Sandbox Code Playgroud)
2嵌套for循环也可以输出相同的结果
for i, p1 in enumerate(a_p1):
for j, p2 in enumerate(a_p2):
print(p1, p2)
Run Code Online (Sandbox Code Playgroud)
我正在寻找一种解决方案来直接输出具有这种组合的Numpy数组(Numpy数组的元组).
有没有办法在没有迭代器和/或循环的情况下生成这样的Numpy数组?
我知道这样的解决方案比使用迭代器更耗费内存.
Fem*_*der 13
安装Scikit-Learn http://scikit-learn.org/
from sklearn.utils.extmath import cartesian
print cartesian([a_p1, a_p2])
Run Code Online (Sandbox Code Playgroud)
它应该输出
[[ 0 20]
[ 0 21]
[ 0 22]
[ 0 23]
[ 0 24]
[ 1 20]
[ 1 21]
[ 1 22]
[ 1 23]
[ 1 24]
[ 2 20]
[ 2 21]
[ 2 22]
[ 2 23]
[ 2 24]
[ 3 20]
[ 3 21]
[ 3 22]
[ 3 23]
[ 3 24]]
Run Code Online (Sandbox Code Playgroud)
这个解决方案来自一个类似的问题: 使用numpy构建一个包含两个数组的所有组合的数组