假设我有两个数组,
import numpy as np
x = np.array([1, 2, 3, 4])
y = np.array([5, 6, 7, 8])
如何以最快、最Pythonic等方式获得一个新的数组z
,使其元素数量等于x.size * y.size
,且数组中的元素是来自两个输入数组的每对元素(x_i, y_j)
的乘积。
换句话说,我要找到一个数组z
,其中z[k]
是x[i]*y[j]
。
获取此数组的一种简单但低效的方法如下:
z = np.empty(x.size * y.size)
counter = 0
for i in x:
for j in y:
z[counter] = i * j
counter += 1
运行上述代码可以看到,在这个例子中
z
的值为In [3]: z
Out[3]:
array([ 5., 6., 7., 8., 10., 12., 14., 16., 15., 18., 21.,
24., 20., 24., 28., 32.])