Чтобы прочитать эту статью, требуется около 4 минут.
Я не должен был быть шокирован, увидев сотни людей, присоединившихся к группе в метро и открывших суперчленов, чтобы расширить группу. — Бенни Хуо
Собираюсь ли я, автор Kotlin, написать туториал по Джулии? —— Философ Чжэн Сяоксин
управление пакетами
Потому что API инсталляционного пакета после 0.7 и 1.0 отличается. Pkg больше не является встроенной глобальной переменной, и для установки пакетов требуется ручноеusing Pkg
или нажмите]
ключ для входаpkg
модель.
Если вам нужно вызвать другие встроенные пакеты Python, отличные от Conda (например,matplotlib
, все верно, именно этот парень, он такой чертовски важный, что не встроенный ) .
И новое управление пакетами очень умное, из-за проблем с областью зависимостей вам все еще нужно быть в Джулии.Активно добавлятьConda — это пакет, вместо того, чтобы напрямую загружать пакет, который зависит от него, как раньше.using
.
Например: если добавитьIJulia
(полагатьсяConda
package), после 1.0 нужно вручную добавить Conda в Pkg, а затем добавить пакет Python через Conda.add. Конечно, что, если я даже не удосужусь поиграть с Кондой? Также можно перейти на Python в каталоге Conda и pip установить matplotlib, чтобы загрузить соответствующий пакет.
Добавить с помощью Conda.add под окнамиmatplotlib
Существует определенная вероятность сбоя, пожалуйста, используйте встроенный Python Conda.jl для добавления пакетов... не спрашивайте меня, почему.
Я показываю скриншоты под Manjaro Deepin. Ведь линукс удобнее винды. Однако есть и другие ямы под Манджаро, отсутствие тк, ручная установка,sudo pacman -S tk
проблема решена.
режим pkg, нажмите ] для входа
(v1.0) pkg> add PyCall
(v1.0) pkg> add Conda
Вернитесь в режим REPL и добавьте соответствующий пакет
julia> using Pkg
julia> Pkg.add("PyCall")
julia> Pkg.add("Conda")
julia> using Conda
julia> Conda.add("matplotlib")
Во всяком случае, для того, чтобы иметь возможностьPyCall
перечислить. затем используйте
using PyCall
@pyimport numpy as np
# 调用python 生成 从 1 到 10 的 10个数
x = np.linspace(1,10,10)
Распечатанный x выглядит так:
10-element Array{Float64,1}:
1.0
2.0
3.0
4.0
5.0
6.0
7.0
8.0
9.0
10.0
В этом случае x находится в ДжулииFloat
типизированный массив
Что это значит? Взаимодействие! Я вызвал функцию Python, и она фактически вернула массив Джулии, что очень изысканно. Тогда мы сможем приступить к работе.
Функции Джулии
Мы знаем, что в грамматике Джулии есть очень интересное место, то есть можно использовать数学表达式
представлятькодиз表达式
.
Это кажется немного запутанным, просто посмотрите на пример ниже.
- на других языках
^
Символы обычно выражают побитовые символы, а Джулия выражает степени, что «очень интуитивно понятно». - В некоторых алгоритмах нам часто нужно использовать умножение, возведение в степень, коэффициент × переменная и т. д. Как играть в Джулию? Просто напишите прямо. Например:
Правильно, это означает $x^2+2x+1$ . Контент, написанный в LaTeX, который я использую здесь,$ x^2+2x+1 $
, можно сказать, что он очень дружелюбен к математике.
Кроме того, здесь я написал return для удобства новичков, на самом деле функция Джулии по умолчанию возвращает последний оператор, когда return не прописан. То есть мы можем написать
function f(x::Int)
x^2+2x+1
end
Конечно, зоркие друзья могли заметить, что на скриншоте выше есть желтая волнистая линия, которая очень раздражает. Можем посмотреть, что здесь написано:
Function with only one statement
Функция имеет только одно выражение. Почему такая подсказка? Потому что у Джулии есть более простой способ написать это!
Если ваша «функция» относительно проста, то мы можем использовать функцию быстрого исправления в IDE JB, и после нажатия клавиши alt+Enter она будет преобразована в компактную функцию.
чтоcompact function
? Давайте сначала посмотрим, что происходит с приведенным выше, когда мы нажимаем Enter:
идеально~
Вернитесь к вызову Python в начале.
Мы можем написать это так
using PyCall
@pyimport numpy as np
@pyimport matplotlib.pyplot as plt
x=np.linspace(0,2pi,1000)
y=np.sin(3x+4*np.cos(2x))
plt.plot(x,y)
plt.show()
успешный вызов
Наконец
Что мы узнали:
- компактный функциональный геймплей
- вызов PyCall
- Я знаю, что есть такой очень весёлый плагин на ведре семейства JB (。・∀・)ノ゙
Особая благодарность
@Археолог Тысяча миль замороженныхизice1000/julia-intellijПлагин обеспечивает поддержку Julia в IDEA, PyCharm и других IDE.