julia - 根据条件为 Julia 矩阵赋值
问题描述
A
我有一个具有维度的零矩阵(m x n)
。我有一些整数值的另一个矩阵b
。b
有长度n
。我希望在任何值大于 5 的地方都设置为标识。所以基本上,对于值大于 5 的每一行,A
将其设置为标识。b
A
b
我试图这样做,但它不起作用。有谁知道如何在 Julia 中做到这一点?
using LinearAlgebra
usable_values = filter((x) -> x > 5, b)
# A[:, usable_values] = I
A[:, b .> 5] = I
解决方案
我不确定我理解“设置为单位”是什么意思:单位矩阵必须是正方形,因此矩阵的行或列不能等于单位矩阵。我将在您希望条目具有值 1 的假设下进行操作。在这种情况下,
A[:, findall(b .> 5)] .= 1
是一个简单的单线。让我们在这里讨论元素:
- 如上所述,
filter
将选择b
大于 5 的元素。但您需要这些元素的索引,这findall
是适当的功能。 - 注意广播分配的使用,
.=
. 这意味着将 RHS 分配给左侧的每个元素。这样您就不需要在 RHS 上创建矩阵。
循环方法也很好,但出于性能原因,我将它放在一个函数中。请参阅性能提示。
推荐阅读
- c - Visual Studio 2019:强制包含文件不起作用?
- python - “解包”熊猫数据框的最快方法
- reactjs - React-Formik:如何使用 Formik 创建注册表单?
- python - 如何在谷歌浏览器中打开网站
- html - 如何围绕图像和图标制作 div 页面(Bootstrap 4)
- elasticsearch - 如何在elasticsearch中搜索数组的多个字段
- javascript - JavaScript 代理在“get”上返回异步值
- java - 如何从片段内的视图持有者调用函数
- reactjs - 反应路由器重定向覆盖其他路由器组件
- python-3.x - Linux CentOS 8 - Pip3 安装 Mariadb