我有一个 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,我想将以下元素归零:
第一行:将小于 0.9 * 最大值 = 1.25238557 的元素清零
第二行:将小于 0.9 * 最大值 = 1.98953326 的元素清零
第三行:将小于 0.9 * 最大值 = 3.29481212 的元素清零
我查看了numpy
的文档,但我没有运气。我也尝试过
A < np.max(A, axis=1)
我希望它能够工作,但事实并非如此。
最佳答案
使用 keepdims
参数保留长度为 1 的轴,而不是删除折叠的轴,以便轴与广播的原始形状对齐:
A[A < 0.9*np.amax(A, axis=1, keepdims=True)] = 0
关于python - 将 `numpy` 数组的元素清零(按行)小于给定向量的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46641601/