在C How to convert int array to int?中也有类似的问题;然而,我在朱莉娅身上找不到这样的问题。如何在Julia(Jupyter notebook)中将“1-D int array”转换为“int”
我的问题是:
然而,x^Ty=2
所以如果您直接键入2
,它是Int64
并且没有错误,如下所示:
那么如何从Array {Int64,1}转换为Int 64,1?
在C How to convert int array to int?中也有类似的问题;然而,我在朱莉娅身上找不到这样的问题。如何在Julia(Jupyter notebook)中将“1-D int array”转换为“int”
我的问题是:
然而,x^Ty=2
所以如果您直接键入2
,它是Int64
并且没有错误,如下所示:
那么如何从Array {Int64,1}转换为Int 64,1?
你必须定义相应的转换方法:
Base.convert{T}(Float64, x::Array{T, 1}) = float(x[1])
或一般
Base.convert{T,K}(::Type{K}, x::Array{T, 1}) = Base.convert(K, x[1])
例子:
v = zeros(Complex{Float64}, 3)
x = [1, 1]
y = [1, 1]
v1 = x'*y
v[1] = v1
v[2] = 45
v[3] = 100
v
结果:
3-element Array{Complex{Float64},1}:
2.0+0.0im
45.0+0.0im
100.0+0.0im
尽管这是用复选标记标记的,但正确的答案实际上是@Gnimuc的下面。这里的方法可能会导致各种问题,当传递给需要标量的函数时,将第一个元素替换为第一个元素。 –
引擎盖下的原因是,朱莉娅 - 0.5仍然不take vector transposes seriously,实际上,x'
是一个1x2的矩阵:
julia> x'
1×2 Array{Int64,2}:
1 1
显然,你想获得的x
和y
点产品,但从技术上来讲x'*y
不正确的语法,你应该使用dot(x,y)
或\cdot[tab]
:
julia> x ⋅ y
2
这个问题已经通过引入新型固定在朱莉娅 - 0.6主:
julia> x'
1×2 RowVector{Int64,Array{Int64,1}}:
1 1
julia> x'*y
2
'arr_to_int {T <:Number}(x :: Vector {T})= length(x)== 1? Int(x [1]):错误(“输入数组没有一个元素”) –