我有一个很长的 numpy 数组,但假设它看起来像这样:
>>> arr1 = np.array([0.001, 0.02, 0.021])
Run Code Online (Sandbox Code Playgroud)
我想一次访问数组中的两个元素并对它们执行操作。例如,我想这样做:
np.cos(arr1[0])*np.cos(arr1[1])
np.cos(arr1[0])*np.cos(arr1[2])
np.cos(arr1[1])*np.cos(arr1[2])
Run Code Online (Sandbox Code Playgroud)
我熟悉函数“outer”,我可以用它做减法:
>>> np.subtract.outer(arr1, arr1)
array([[ 0. , -0.019, -0.02 ],
[ 0.019, 0. , -0.001],
[ 0.02 , 0.001, 0. ]])
Run Code Online (Sandbox Code Playgroud)
如何将我自己的函数输入到 numpy 的外部?
编辑:基于评论中的一个问题,我希望函数返回如下内容:
我想要与 numpy 的外部函数返回的模式相同的模式。
array([[ np.cos(arr1[0])*np.cos(arr1[0]), np.cos(arr1[0])*np.cos(arr1[1]), np.cos(arr1[0])*np.cos(arr1[2]) ],
[ np.cos(arr1[1])*np.cos(arr1[0]), np.cos(arr1[1])*np.cos(arr1[1]), np.cos(arr1[1])*np.cos(arr1[2]) ],
[ np.cos(arr1[2])*np.cos(arr1[0]), np.cos(arr1[2])*np.cos(arr1[1]), np.cos(arr1[2])*np.cos(arr1[2]) ]])
Run Code Online (Sandbox Code Playgroud)
如果您正在进行要矢量化的数学运算,请使用 numpy广播和 ufunc。
arr1 = np.array([0.001, 0.02, 0.021])
cos_a = np.cos(arr1)
out = cos_a * cos_a[:,None] #rows * cols
Run Code Online (Sandbox Code Playgroud)