python - 将 `numpy` 数组的元素清零(按行)小于给定向量的值

标签 python arrays numpy array-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,我想将以下元素归零:

第一行:将小于 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/

相关文章:

python - 不使用 sudo 运行 Flask?

java - 数据转换

PHP 从多维数组中提取值而无需循环

python - 求解一对线性方程时的断言错误

python - Python 中的错误最近邻

python - 'for' 循环和映射之间的区别

python - 如何在 Synology 上安装 Pip 3,然后安装 Python Lib MySQLdb

python - 如何将要素类复制到 ArcGIS/Python 中的新地理数据库中?

c++ - 从二维数组中获取一维数组索引

导入 2d 数据的 Python 和内存高效方式