在R中,这段代码运行良好:
denom <- matrix(c(0.1125588, 2.1722226, 0.5424582, 1.1727604,3.0524269 ,0.0524625 ,0.1752363 ,0.7198743,0.7282291 ,0.1646349 ,0.7574503, 2.3496857),3,4,byrow=TRUE)
indexM <- apply(denom,1,function(x) which(x==max(x)))
indexM
# 2 1 4
这是否接近Python等价物?它不起作用(AttributeError:'tuple'对象没有属性'ndim')
denom = np.array([[0.1125588, 2.1722226, 0.5424582], [1.1727604,3.0524269 ,0.0524625] ,[0.1752363 ,0.7198743,0.7282291] ,[0.1646349 ,0.7574503, 2.3496857]]);
indexM = np.apply_over_axes(lambda x,y: np.where(x == x.max(axis=1)) ,denom, axes=(0) );
答案 0 :(得分:1)
您正在使用R和Python创建不同的数据。在R中,您可以创建包含3行和4列的数据,但在Python中,您可以创建包含4行和3列的数据。
修复后,为了得到你想要的东西,你可以denom.argmax(axis=1)
:
denom = np.array([
[0.1125588, 2.1722226, 0.5424582, 1.1727604],
[3.0524269 ,0.0524625,0.1752363 ,0.7198743],
[0.7282291,0.1646349 ,0.7574503, 2.3496857]
])
>>> denom.argmax(axis=1)
array([1, 0, 3], dtype=int64)
(结果中的数字不同,因为Python使用基于0的索引,R使用基于1的索引,但它们指的是相同的位置。)