Массивы
В Julia есть много способов инициализации массивов. Базовый способ создания нового массива - с помощью метода Array
В данном случае, метод Array
создает массив, тип элементов Float64
, размерность 2
, значения Undefined
, размер 2х3
.
Более простой способ создания массивов разных размерностей:
Пробел обозначает разделение элементов в одной строке. ;
- разделение строк
Обратите внимание, что [1 2 3 4]
- задает Матрицу, размерности 2
, размера 1х4
, а [1, 2, 3, 4]
- задает Вектор, длины 4
.
Стандартные методы работы с массивами
zeros(n, m)
- создает матрицу, размерностит n x m
, заполненную нулями. Можно также указать тип в качесве первого аргумента: zeros(Int8, 2, 3)
.
ones(n, m)
- создает матрицу, размерности n х m
, заполненную единицами. Можно также указать тип в качесве первого аргумента: ones(Int8, 2, 3)
.
trues(n, m)
/ falses(n, m)
- создает матрицу, размерности n x m
, заполненную битовыми единицами или нулями.
fill(x, (n, m))
- заполняет массив n x m
значениями x
rand(n)
- создает вектор, размера n
, заполненный случайными числами
rand(k:j, n)
- создает вектор, размера n
, заполненный числами от k
до j
rand(n, m)
- создает матрицу, размера n x m
, заполненную случайными числами
collect(range)
- создает вектор из диапазона range
.
push!(A, x)
- добавляет элемент x
в конец массива A
(! - означает, что функция меняет значение своих аргументов)
pushfirst!(A, x)
- добавляет элемент x
в начало массива A
(! - означает, что функция меняет значение своих аргументов)
insert!(A, n, x)
- вставка значения x
в вектор A
на позицию n
pop!(A)
- удаление последнего элемента массива
popfirst!(A)
- удаление первого элемента массива
deleteat!(A, pos)
- удаление элемента массива A
на позиции pos
A = A[end:-1:1]
- реверс массива A
x
in A
- проверка наличия элемента x
в массиве A
length(A)
- длина массива
maximum(A)
/ minimum(A)
- максимальное / минимальное число в массиве A
B = vec(A)
- преобразование массива в вертикальный вектор
transpose(A)
- транспонирование массива
A * B
- перемножение матриц
sum(A)
- суммирование элементов. Можно также использовать столбцы или строки: sum(A, dims=1)
, sum(A, dims=2)
Интересные примеры
Конкатенация в массивах
В данном случае точка с запятой ;
- это вертикальная конкатенация каждого элемента диапазона
Общий синтаксис конкатенации
[A; B; C; ...]
- вертикальная конкатенация vcat
vcat(A, B)
- объединение двух массивов по вертикали, если они имеют одинаковое количество столбцов. С помощью vcat
можно добавлять строки в матрицу. Тоже самое, что [A; B]
.
[A B C ...]
- горизонтальная конкатенация hcat
hcat(A, B)
- объединение двух массивов по горизонтали, если они имеют одинаковое количество строк. С помощью hcat
можно добавлять столбцы в матрицу. Тоже самое, что [A B]
.
[A B; C D; ...]
- горизонтально-вертикальная конкатенация hvcat
Подробнее про конкатенацию см. по ссылке.
Генераторы (comprehensions)
Julia поддерживает синтаксис генераторов, очень похоже на другие языка, например Python
A = [0 for i in 1:10]
- вектор с 10 нулевыми элементами
A = [x * y for x in 1:10 for y in 1:2]
- вектор с 20 элементами
В данном примере x
- вектор [1, 2, 3]
повторяется вертикально 4 раза суммируя каждый элемент со значением y
. Обратите внимание на разницу - внутри стоит стоит запятая, которая указывает, что это матрица.
Подробнее про генераторы в Julia смотрите по ссылке.
Выборка slice
A[n, m]
- выбрать элемент в n-строке и в m-столбце
a[i:k:j]
- выборка диапазона элементов от i-го до j-го с шагом k из вектора a
A[i1:k1:j1, i2:k2:j2]
- выборка элементов из мартицы A
A[:,:]
- выборка всех элементов матрицы A
Векторизация
В Julia довольно легко делать операции над элементами векторов и матриц. Для этого удобно использовать оператор векторизации . которы применяет функцию на каждый элемент массива.
A .* 2 - умножение каждого элемента массива на 2
log.(A) - натуральный логарифм от каждого элемента массива
A .+ B - поэлементное сложение двух матриц
Подробнее про векторизацию в Julia смотрите по ссылке.
Пересечение массивов
union(A, B, C, ...)
- объединяет только уникальные элементы массивов
intersect(A, B)
- пересечение элементов в массиве
setdiff(A, B)
- неповторяющиеся элементы массивов
unique(A)
- уникальные элементы массива. Возвращает Тип множество - Set
.
Last updated