matrix - 如何将 not 运算符应用于 Julia 中的所有矩阵元素?
问题描述
我需要将“非”运算符应用于 Julia 中的零和一矩阵。在 Matlab 中,我会这样做:
A=not(B);
在 Julia 我尝试这样做:
A = .~ B;
和
A = .! B;
它应该将零变为一,将一变为零,但结果我得到错误,或者所有矩阵元素都是一些我没有输入的负数。提前致谢!
解决方案
问题A = .!B
在于逻辑否定 ,!(::Int64)
没有为整数定义。这是有道理的:应该说,!3
合理地给予什么?
既然您想执行逻辑运算,那么您是否有更深层次的原因来开始使用整数?
您也许可以使用效率更高的替代方法,并且在大多数操作中BitArray
应该像常规操作一样。Array
您可以轻松地将整数矩阵转换为BitArray
. 之后,应用逻辑不按预期工作。
julia> A = rand(0:1, 5,5)
5×5 Array{Int64,2}:
0 0 0 1 1
0 1 0 0 1
0 1 1 1 0
1 1 0 0 0
1 1 1 0 0
julia> B = BitArray(A)
5×5 BitArray{2}:
0 0 0 1 1
0 1 0 0 1
0 1 1 1 0
1 1 0 0 0
1 1 1 0 0
julia> .!B
5×5 BitArray{2}:
1 1 1 0 0
1 0 1 1 0
1 0 0 0 1
0 0 1 1 1
0 0 0 1 1
这里的关键部分是 a 的元素类型 ( eltype
)BitArray
是Bool
,它的否定显然是很好定义的。从这个意义上说,您还可以使用B = Bool.(A)
将所有元素转换为布尔值。
推荐阅读
- java - System.getProperty("user.home") 不起作用
- php - Symfony Forms: Collection - 只需添加新条目/防止修改旧条目
- android - Android coordinatorlayout 在 RecyclerView 下面添加布局
- azure-cosmosdb-gremlinapi - 无法将 gremlin 控制台连接到 Cosmos DB 帐户:“log4j:WARN No appenders could be found for logger”
- reactjs - 动态他导入后如何挂载React组件
- java - Java中数组的索引可以是负数吗?
- spring - Spring + Kotlin - 是否可以检测某些函数调用?
- python - Pandas:如何仅在一列中更改元素的类型?
- spring-boot - 在 Project reactor 中重复请求的最佳方式
- html - 如何为几种字体类型之一使用链接预加载