我有一些onehot编码的数据,叫做testoutput,它的形状是(1000,14)。
我想解码它,所以遵循我在网上找到的一些建议,我使用了以下代码:
# go from onehot encoding to integer
def decode(datum):
return np.argmax(datum)
predictedhits=np.empty((1000))
for i in range(testoutput.shape[0]):
datum = testoutput[i]
predictedhits[i] = decode(datum)
print('Event',i,'predicted number of hits: %s' % predictedhits[i])
字符串
问题是,我希望并期望np.argmax输出一个整数,但它却输出了一个numpy.float64。请有人能告诉我为什么会发生这种情况,该怎么办?简单地做predictedhits[i] = int(decode(datum))并没有改变任何东西。
提前感谢!
1条答案
按热度按时间envsm3lx1#
您误诊了问题。
numpy.argmax
没有返回numpy.float64
的示例。相反,predictedhits
具有float64 dtype。将任何值存储到该数组中都会将其存储为64位浮点数,而从数组中检索predictedhits[i]
会生成numpy.float64
对象。与每次遍历
testoutput
的行并将值逐个存储到空数组中不同,只需沿所需的轴沿着调用argmax
:字符串
这样可以节省代码、节省运行时间,并生成一个具有正确dtype的数组。