【发布时间】:2020-02-28 07:51:46
【问题描述】:
我有一个 NumPy 数组,每一行代表一些 (x, y, z) 坐标,如下所示:
a = array([[0, 0, 1],
[1, 1, 2],
[4, 5, 1],
[4, 5, 2]])
我还有另一个 NumPy 数组,该数组的 z 坐标具有唯一值,如下所示:
b = array([1, 2])
如何将一个函数(我们称之为“f”)应用到 a 中与 b 中的值相对应的每个行组?例如,b 的第一个值是 1,所以我会得到 a 的所有行,在 z 坐标中具有 1。然后,我将一个函数应用于所有这些值。
最后,输出将是一个与 b 形状相同的数组。
我正在尝试对其进行矢量化以使其尽可能快。谢谢!
预期输出示例(假设 f 为 count()):
c = array([2, 2])
因为数组 a 中有 2 行在数组 b 中的 z 值为 1,而数组 a 中有 2 行在数组 b 中的 z 值为 2。
一个简单的解决方案是像这样遍历数组 b:
for val in b:
apply function to a based on val
append to an array c
我的尝试:
我尝试做这样的事情,但它只返回一个空数组。
func(a[a[:, 2]==b])
【问题讨论】:
-
发布预期输出。
-
@ZarakiKenpachi 感谢您的评论!刚刚加了一个
-
预期输出只是计数还是所有这些索引?
-
@Divakar 示例中的预期输出是基于这些索引的计数,但在我的情况下,“计数”可以是任何函数