零(行方向)“numpy”数组的元素小于给定向量的值

时间:2017-10-09 08:10:16

标签: python arrays numpy numpy-broadcasting

我有一个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)

我希望它可以工作,但事实并非如此。

1 个答案:

答案 0 :(得分:3)

使用keepdims参数保留长度为1的轴而不是删除折叠的轴,因此轴与原始形状对齐以进行广播:

A[A < 0.9*np.amax(A, axis=1, keepdims=True)] = 0