高效生成高维数组

时间:2014-08-02 13:51:36

标签: python arrays numpy multidimensional-array

假设我有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的签名对我来说并不重要;任何其他插入输入的方式都可以。

0 个答案:

没有答案