julia - not 运算符 (!) 不适用于数组广播
问题描述
我想知道为什么 not 运算符不使用数组广播/元素操作。例如,如果我输入
x = Array{Any}([1,2,3,4,missing,6])
!ismissing.(x)
我收到一个错误ERROR: MethodError: no method matching !(::BitArray{1})
但如果我尝试 ismissing.(x) 它工作正常,
ismissing.(x)
#out > 6-element BitArray{1}: 0 0 0 0 1 0
并且没有广播的打字也可以作为一个整体工作(整个数组的一个输出)
!ismissing(x)
#out > True
所以我想知道是否有可能获得与使用“!”类似的结果 操作员。
解决方案
您还需要广播!
到每个元素:
julia> x = Array{Any}([1,2,3,4,missing,6]);
julia> .!(ismissing.(x)) # the . comes before operators (!, +, -, etc)
6-element BitVector:
1
1
1
1
0
1
对于这种特定情况,您可以在广播之前否定该函数:
julia> (!ismissing).(x)
6-element BitVector:
1
1
1
1
0
1
推荐阅读
- javascript - 反应原生 Firebase 电话身份验证 - 非常奇怪的行为
- c++ - 透明 CWnd 过期时删除打开对话框的窗口句柄
- javascript - Discord.js TypeError:无法读取未定义的属性“缓存”
- node.js - 用户保存/提交时如何添加/更新片段字段
- javascript - 身份验证后重定向不起作用。历史上没有道路
- bash - 在特定目录中创建文件 bash
- python - 模板渲染期间出错:/products/product-3/ 处的 NoReverseMatch
- mule - 如何在 Devkit 连接器中获取下拉列表选项?
- git - 如何设置 gitignore 使文件显示为现有但不更改?
- pg-promise - 带有用于 where 条件的动态列的 select 语句