您可以使用numpy广播在两个数组上进行计算,使用以下命令将其
a转换为垂直2D数组
newaxis:
In [11]: a = np.array([1, 2, 3]) # n1 = 3 ...: b = np.array([4, 5]) # n2 = 2 ...: #if function is c(i, j) = a(i) + b(j)*2: ...: c = a[:, None] + b*2In [12]: cOut[12]: array([[ 9, 11], [10, 12], [11, 13]])
进行基准测试:
In [28]: a = arange(100)In [29]: b = arange(222)In [30]: timeit r = np.array([[f(i, j) for j in b] for i in a])10 loops, best of 3: 29.9 ms per loopIn [31]: timeit c = a[:, None] + b*210000 loops, best of 3: 71.6 us per loop



