我有一个numpy
数组,例如
import numpy as np
A = np.exp(np.random.randn(3,10))
即阵列
array([[ 1.17164655, 1.39153953, 0.68628548, 0.1051013 ],
[ 0.45604269, 2.21059251, 1.79624195, 0.37553947],
[ 1.03063907, 0.28035114, 1.70371105, 3.66090236]])
我按如下方式计算行的最大值
np.max(A, axis=1)
array([ 1.39153953, 2.21059251, 3.66090236])
我想将A
的元素归零,其值小于相应行的最大值的一小部分。例如,对于上面的例子,如果我们将这个分数设置为0.9,我想将以下元素归零:
第1行:将小于0.9 *的元素归零= 1.25238557
第2行:将小于0.9 *的元素归零= 1.98953326
第3行:将小于0.9 *的元素归零= 3.29481212
我查看了numpy
的文档,但我没有运气。我也试过
A < np.max(A, axis=1)
我希望它可以工作,但事实并非如此。
答案 0 :(得分:3)
使用keepdims
参数保留长度为1的轴而不是删除折叠的轴,因此轴与原始形状对齐以进行广播:
A[A < 0.9*np.amax(A, axis=1, keepdims=True)] = 0