python - 查找和替换 numpy 数组上的浮点数
问题描述
我有一些具有特定值的大型 numpy 列表(数千个元素),例如其中一个值必须是其中之一:1.0、2.0、3.0、4.0、5.0。
我需要找到并替换其中的一些值,而我想要以最小的计算成本来做到这一点。有没有办法在不循环每个元素的情况下做到这一点?
这是我到目前为止得到的:
for x, y in np.ndindex(z_.shape):
z_[x,y] = 150.0 if z_[x,y] == 1.0 else z_[x,y]
z_[x,y] = 120.0 if z_[x,y] == 2.0 else z_[x,y]
z_[x,y] = 110.0 if z_[x,y] == 3.0 else z_[x,y]
如果传递一个值列表,我可以概括这些,使这部分函数更通用吗?
解决方案
您可以使用np.select
:
z_ = np.select( (z_==1,z_==2, z_==3),
(150, 120, 110),
default=z_)
推荐阅读
- azure - MSFT Azure 管道能否连接到 Bitbucket 作为源代码控制系统,然后构建构建工件并将其部署到本地服务器?
- javascript - JSF 没有正确调用 jQuery 函数
- java - 如何在 Android Studio Camera2 中获取设备相机分辨率
- python - 使用 Virtualenv 命名为 Flask 的错误模块
- html - HTML 5 视频标签未显示全屏按钮
- scala - 给定关键字在 Scala 3 或 dotty 中如何工作?
- github - Github Actions:当分叉的 repo 发生 pr 时,向基础 repo 创建一个拉取请求
- python - 多线程的用户提示
- java - 为什么 Hibernate 在 Spring 事务中说“无会话”?
- excel - 当成员是 Cubset 函数时,Cubevalue 返回空白(零长度字符串)