我有一个形状为(N,3)的数组,例如:
arr = np.array(
[
[0,1,1],
[0,1,2],
[2,2,2]
]
)
我想按前两列对这个数组进行分组,以获得如下所示的数组
grouped_arr = np.array([[[0,1,1], [0,1,2]], [[2,2,2]]])
最后,我想得到只有一个元素组,而第三列将是平均组第三列
final_array = np.array([[0,1,1.5], [2,2,2]])
我正在尝试一些东西,但不确定它是否正确,是否是实现它的有效方法:
import numpy as np
arr = np.array([[0,1,1], [0,1,2], [2,2,2]])
stacked = np.vstack((arr[:,0], arr[:,1])).transpose()
uniques_values = np.unique(stacked, axis=0)
groups = []
for v in uniques_values:
groups.append(arr[v])
final_arr = []
for group in groups:
mean = np.mean(group[:,2], axis=0)
final_arr.append(np.array([group[0][0], group[0][1], mean]))
print(final_arr)
>>>[array([0. , 1. , 1.5]), array([2., 2., 2.])]
我正在寻找一个可靠和有效的建议。在我的真实的数据的dtype是浮动
1条答案
按热度按时间w9apscun1#
您的“分组”实际上只是普通的切片: