我有一个numpy数组,它保存有以下格式的4维向量(x,y,z,w)
数组的大小是4xn。现在,我得到的数据是我有(x,y,z)空间位置,w在这个位置保存一些特定的测量值。现在,可能有多个与(x,y,z)位置相关联的测量(以浮点形式测量)。在
我想做的是过滤数组,这样我就得到了一个新的数组,在这个数组中,我得到了每个(x,y,z)位置对应的最大测量值。在
如果我的数据是:
x, y, z, w1
x, y, z, w2
x, y, z, w3
当w1大于w2和w3时,过滤后的数据为:
^{pr2}$更具体地说,假设我有如下数据:
[[ 0.7732126 0.48649481 0.29771819 0.91622924]
[ 0.7732126 0.48649481 0.29771819 1.91622924]
[ 0.58294263 0.32025559 0.6925856 0.0524125 ]
[ 0.58294263 0.32025559 0.6925856 0.05 ]
[ 0.58294263 0.32025559 0.6925856 1.7 ]
[ 0.3239913 0.7786444 0.41692853 0.10467392]
[ 0.12080023 0.74853649 0.15356663 0.4505753 ]
[ 0.13536096 0.60319054 0.82018125 0.10445047]
[ 0.1877724 0.96060999 0.39697999 0.59078612]]
这个应该会回来
[[ 0.7732126 0.48649481 0.29771819 1.91622924]
[ 0.58294263 0.32025559 0.6925856 1.7 ]
[ 0.3239913 0.7786444 0.41692853 0.10467392]
[ 0.12080023 0.74853649 0.15356663 0.4505753 ]
[ 0.13536096 0.60319054 0.82018125 0.10445047]
[ 0.1877724 0.96060999 0.39697999 0.59078612]]
我看到你已经在评论中提到熊猫了。FWIW,这里介绍了如何获得所需的行为,假设您不关心最终的排序顺序,因为groupby更改了它。在
您可以从^{} 输入数组开始,将具有相同的前三个元素的条目依次放入。然后,创建另一个2D数组来存储最后的列条目,这样与每个重复的三元组对应的元素进入相同的行。接下来,找到这个2D数组的
max
,并为每个这样唯一的三元组得到最终的max
输出。下面是实现,假设A
作为输入数组-样本运行-
^{pr2}$这是复杂的,但它可能是最好的,你将得到使用纽比只。。。在
首先,我们使用^{} 将具有相同坐标的所有条目放在一起。使用
a
作为示例数组:注意,通过反转轴,我们按}。在
x
排序,断开与y
的联系,然后z
,然后{因为这是我们要寻找的最大值,所以我们只需要在每个组中取最后一个条目,这是一件非常简单的事情:
^{pr2}${如果你不能按照原始数组的顺序来排序,那么你也可以按照原来的顺序排列它们:
这只会最大限度地发挥作用,它是排序的副产品。如果您使用的是不同的函数,比如所有相同坐标项的乘积,您可以执行以下操作:
你需要花一点时间来处理这些结果来组装你的返回数组。在
相关问题 更多 >
编程相关推荐