【发布时间】:2018-08-22 13:21:29
【问题描述】:
我有两组分类(Lc1 和 Lc2)和两组概率(Lp1 和 Lp2)。 Lp1 是描述Lc1 中分类可能性的概率集。我想使用最可能的分类将Lc1 和Lc2 中的信息组合成class_result。
import numpy as np
#example data
Lp1 = np.ones((2,2))*0.5
Lc2 = np.ones((2,2))
Lc1 = np.ones((2,2))
Lp2 = np.ones((2,2))*0.5
#Change some values for the example
Lp1[1,1] =0.95
Lc1[1,1] = 0
Lc2[0,1]=3
Lp2[0,1]=.95
p_stack = np.stack((Lp1,Lp2))
c_stack = np.stack((Lc1,Lc2))
index = np.argmax(p_stack, axis=2)
class_result = np.take(c_stack, index)
我最初的方法是为分类和概率集创建一个np.stack,并使用np.argmax 查找最大值出现在p_stack 中的轴索引。 np.take 的文档似乎描述了我需要做的操作,但我不明白为什么它返回一个数组。有没有办法通过指定我要选择的值的轴来减少np.stack 的维度?
我想要的结果是:
class_result = np.array([[1,3],[1,0]])
【问题讨论】:
标签: python arrays numpy indexing