python-2.7 - 如何更新满足列条件的numpy列?
问题描述
如果我有以下情况:
import numpy as np
a = np.array([[0, 1],
[1, 3],
[4, 4]])
如果满足列条件,则希望更新列值。例如,如果第 2 列值大于 2,则仅将该列值替换为 9。
a = [[0, 1],
[1, 9],
[4, 9]]
我原以为这会起作用,但它会更新该行中的所有值。
a[a[:,1] > 2] = 9
但它会替换行中的所有值。
a =[[0, 1],
[9, 9],
[9, 9]]
我猜我对如何在这里创建布尔索引缺少一些了解。
解决方案
你需要:
import numpy as np
a = np.array([[0, 1],
[1, 3],
[4, 4]])
a[:,1]= np.where(a[:,1]>2, 9, a[:,1])
print(a)
输出:
array([[0, 1],
[1, 9],
[4, 9]])
为什么你的代码不起作用
尝试打印出来print(a[a[:,1] > 2])
它将输出为:
[[1 3]
[4 4]]
如果第二个索引大于 2,它将检查第二个索引,它将返回一整行。
推荐阅读
- java - Maven 发布插件和 cifriendly 版本
- java - 从数据库中删除所有消息
- reactjs - 我正在学习 REACTJS,但如果有人可以帮助我,我有一个错误
- c# - CsvHelper - 拆分输出文件
- visual-studio-code - Visual Studio Code 不在 JavaScript 中添加函数括号
- python - subprocess.Popen("echo $HOME"... 和 subprocess.Popen(["echo", "$HOME"] 有什么区别?
- android - Android Studio:自动允许使用相机拍照和拍摄视频的权限
- ios - 套接字不与服务器连接但在本地主机上工作
- javascript - 在打字稿中检查空值
- typescript - 带有对象解构的打字稿可选链接