python - 两侧的numpy掩码数组
问题描述
假设一个numpy数组x。我该怎么办x[x>value] = max(value1, x[x>value])
?
换句话说,如果元素x[i] > value
,那么x[i] = max(value1, x[i])
。
谢谢。
编辑
使用numpy.maximum
而不是numpy.max
解决问题。当我numpy.max
收到错误消息时TypeError: only integer scalar arrays can be converted to a scalar index
解决方案
做一个数组:
In [361]: x = np.random.randint(0,10,10)
In [362]: x
Out[362]: array([7, 8, 4, 8, 1, 2, 6, 6, 3, 9])
确定要替换的值:
In [363]: mask = x>5
In [364]: mask
Out[364]:
array([ True, True, False, True, False, False, True, True, False,
True])
In [365]: x[mask]
Out[365]: array([7, 8, 8, 6, 6, 9])
替换值:
In [368]: np.maximum(7, x[mask])
Out[368]: array([7, 8, 8, 7, 7, 9])
只要双方的项数相同(shape
实际上):
In [369]: x[mask] = np.maximum(7, x[mask])
In [370]: x
Out[370]: array([7, 8, 4, 8, 1, 2, 7, 7, 3, 9])
由于这实际上只是在 5 和 7 之间更改值,我们可以使用:
In [378]: x = np.array([7, 8, 4, 8, 1, 2, 6, 6, 3, 9])
In [379]: mask = (x>5) & (x<7)
In [380]: mask
Out[380]:
array([False, False, False, False, False, False, True, True, False,
False])
In [381]: x[mask]
Out[381]: array([6, 6])
In [382]: x[mask] = 7
推荐阅读
- python - Word Cloud python 库在每个单词的末尾显示一个撇号
- swift - 快速获取滚动方向
- python - 如何在表示图形的字典上行走并返回元素列表
- python - 提取熊猫中名称的值
- delphi - 在 TPathData 中切换特定颜色
- javascript - Can I get a only Dubai city address from Google Maps autocomplete?
- php - 如何通过 get_terms 函数中的帖子元限制术语
- linux-kernel - 获取 msi 中断时如何保证所有 DMA 数据写入 ram?
- android - 颤振列表值未更新
- sql-server - 使用表名更新记录的存储过程