我在这里问了一个上一个问题
那么如何将接受的答案应用于具有多个参数的函数,因为外部函数只接受两个数组,而不是 N 个数组
所以给定一个函数:
def func(velocity, distance, mass, g):
return velocity*distance/mass/g
.outer
或类似的方法将如何在这里应用?
使用我回答您之前问题的相同想法,您基本上可以使用相同的技术来制作输入视图,以使广播正常工作:
import numpy as np
def multi_broadcast(arrs):
for i, arr in enumerate(arrs):
yield arr[tuple(
slice(None) if j == i else None
for j, arr in enumerate(arrs) for d in arr.shape)]
可以直接用于您的广播兼容功能:
arrs = [np.arange(1, n + 1) for n in range(2, 2 + 4)]
arr = func(*multi_broadcast(arrs))
print(arr.shape)
# (2, 3, 4, 5)