предположим, что у меня есть массив из трех элементов:
A = [1, 2, 3]
Как я могу преобразовать его в:
B = [1; 2; 3]
в Юлии?
Два выражения, которые у вас есть, точно равны друг другу, [1, 2, 3] == [1; 2; 3]
. Оба они представляют собой одномерные векторы. В Джулии одномерные векторы отличаются от векторов-строк и векторов-столбцов.
Кстати, в комментарии @OscarSmith, похоже, есть опечатка. Для transpose
используется символ '
(запятая), а не обратная галочка.
ой. извините за опечатку
Тоже интересно reshape([1,2,3],1,3)
transpose
создает объект Adjoint
, который на самом деле содержит представление
julia> A = [1, 2, 3];
julia> A'
1×3 LinearAlgebra.Adjoint{Int64,Array{Int64,1}}:
1 2 3
Обернув его с помощью collect, мы получим фактический горизонтальный вектор:
julia> collect(A')
1×3 Array{Int64,2}:
99 2 3
Однако вы должны понимать, что в Юлии одномерные Vector
всегда вертикальны, в то время как вектор также может быть представлен двумерной матрицей, где одно измерение равно единице:
julia> B=[1 2 3]
1×3 Array{Int64,2}:
1 2 3
julia> C = collect(B')
3×1 Array{Int64,2}:
1
2
3
Наконец, каждый из них можно преобразовать в стандартный вектор с помощью функции vec
или оператора [:]
:
julia> A == B[:] == C[:] == vec(B) == vec(C) == @view(C[:]) == @view(B[:])
true
transpose
или`