我对 Julia 很陌生,所以也许这是个愚蠢的问题。我有以下代码:
a = [1.0, 2.0];
b = [2.2, 3.1];
Int(a.>b)
它给了我一个错误:
MethodError: Cannot `convert` an object of type BitArray{1} to an object of type Int64
This may have arisen from a call to the constructor Int64(...),
since type constructors fall back to convert methods.
Stacktrace:
[1] Int64(::BitArray{1}) at ./sysimg.jl:77
[2] include_string(::String, ::String) at ./loading.jl:522
该命令1(a.>b)
运行良好。你能解释一下:为什么我的隐式转换不起作用?
a.>b
是 类型BitArray{1}
。当Int(a.>b)
您尝试将数组(即 a BitArray
)转换为单个整数时,这是没有意义的。
相反,您可能希望将数组的元素转换为整数:
julia> a = [1.0, 2.0];
julia> b = [2.2, 3.1];
julia> Int.(a.>b)
2-element Array{Int64,1}:
0
0
注意点Int.(a.>b)
其中广播转化为每一个元素。
之所以1(a.>b)
有效是因为它正在被翻译成1*(a.>b)
. 这是一个数字和一个数组的乘法,这是一个元素操作。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句