在具有 N 个参数的 N 个数组上调用 func.outer



我在这里问了一个上一个问题

那么如何将接受的答案应用于具有多个参数的函数,因为外部函数只接受两个数组,而不是 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)

最新更新