假设我有n
个维度,每个维度都配有一个值数组,此外我还有一个运算符(例如np.prod
,或者任何其他操作numpy数组的运算符)。< / p>
我希望生成n
维数组arr
,以便arr[a1,a2,...,an]
将a1
的{{1}}值返回给我{}}第一个数组,第二个数组的a2
值等,
低维度的例子可能会更清晰:
import numpy as np
def generate(operator, *arrays):
...
arr_1 = np.array([0.5, 0.3, 0.2])
arr_2 = np.array([0.2, 0.3, 0.5])
arr_3 = np.array([0.4, 0.7])
arr = generate(np.prod, arr1, arr2, arr3)
print arr[0, 1, 1] == 0.5 * 0.3 * 0.7
## Prints True
arr_max = generate(np.max, arr1, arr2, arr3)
print arr[2, 1, 0]
## Prints 0.4
循环似乎相当缓慢,因为我不习惯矢量思考,所以我发布了这个问题。
另一个相关问题:我希望这个数组有多大?
根据要求,这里可能输出generate(np.prod, arr1, arr2, arr3)
:
array([[[ 0.04 , 0.07 ],
[ 0.06 , 0.105],
[ 0.1 , 0.175]],
[[ 0.024, 0.042],
[ 0.036, 0.063],
[ 0.06 , 0.105]],
[[ 0.016, 0.028],
[ 0.024, 0.042],
[ 0.04 , 0.07 ]]])
我还想补充一点,generate
的签名对我来说并不重要;任何其他插入输入的方式都可以。