【发布时间】:2021-09-15 03:34:30
【问题描述】:
我正在尝试运行类似的东西:
np.bincount(array1, weights = array2, minlength=7)
array1 和 array2 都是形状为 (m,n) 的 2d n numpy 数组。我想要的目标是np.bincount() 对 array1 和 array2 的每一行运行 n 次
我尝试过使用np.apply_along_axis(),但据我所知,这只允许在array1 的每一行上运行该函数,而不使用array2 的每一行作为np.bincount 的参数。我希望找到一种方法来使用 numpy 函数而不是迭代来干净地做到这一点,因为这是一个性能关键函数,但到目前为止找不到另一种方法。
例如,给定这些数组:
array1 = [[1,2,3],[4,5,6]]
array2 = [[7,8,9],[10,11,12]]
我想计算:
[np.bincounts([1,2,3], weights = [7,8,9],minlength=7), np.bincounts([4,5,6], weights = [10,11,12], minlength=7)]
【问题讨论】:
-
总是有助于给出一个输入和预期输出的小例子......
-
apply_along...即使在工作的地方也不是性能工具。它不会编译函数并在c中执行循环。 -
没有通用的方法来做到这一点。如果必须为每对行调用一次函数,那么无论迭代方法或包装器如何,都需要时间。有时可以重新考虑问题并一次解决所有行的问题。但是
bincount通过 1d 工作获得了它的速度。