[Julia 1.0 Mission-01] Функции и вызов Python

искусственный интеллект Python алгоритм Windows
Чтобы прочитать эту статью, требуется около 4 минут.

Я не должен был быть шокирован, увидев сотни людей, присоединившихся к группе в метро и открывших суперчленов, чтобы расширить группу. — Бенни Хуо
Собираюсь ли я, автор Kotlin, написать туториал по Джулии? —— Философ Чжэн Сяоксин

управление пакетами

Потому что API инсталляционного пакета после 0.7 и 1.0 отличается. Pkg больше не является встроенной глобальной переменной, и для установки пакетов требуется ручноеusing Pkgили нажмите]ключ для входаpkgмодель.

Если вам нужно вызвать другие встроенные пакеты Python, отличные от Conda (например,matplotlib, все верно, именно этот парень, он такой чертовски важный, что не встроенный ) .

И новое управление пакетами очень умное, из-за проблем с областью зависимостей вам все еще нужно быть в Джулии.Активно добавлятьConda — это пакет, вместо того, чтобы напрямую загружать пакет, который зависит от него, как раньше.using.

Например: если добавитьIJulia(полагатьсяCondapackage), после 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.

использованная литература