KinoPythonx
Mix.install([
{:pythonx, "~> 0.4.2"},
{:kino_pythonx, "~> 0.1.0"},
{:nx, "~> 0.9.2"},
{:explorer, "~> 0.10.1"}
])
[project]
name = "project"
version = "0.0.0"
requires-python = "==3.13.*"
dependencies = [
"numpy == 2.2.*",
"pandas == 2.2.*",
"scikit-learn == 1.6.*"
]
Python実行
print("Hello, world!")
1 + 2
total = sum([1, 2, 3])
total
import numpy as np
a1 = np.array([1, 2])
a2 = np.array([3, 4])
np.dot(a1, a2)
数値
a = 1
b = 2
{a, b}
c = a + b
d = a * b
(c, d)
{c, d}
Pythonx.decode(c) + Pythonx.decode(d)
文字列
i = "hello"
j = "world"
{i, j}
k = i + j
l = f"{i.decode()}, {j.decode()}"
(k, l)
{k, l}
Pythonx.decode(k) <> " " <> Pythonx.decode(l)
配列
o = [1, 2, 3]
p = [4, 5, 6]
{o, p}
q = o + p
q
q |> Pythonx.decode() |> Enum.sum()
マップ
x = %{"name" => "ryo", :age => 40}
x
(x['age'], x[b'name'])
y = x
y['country'] = 'japan'
y
Pythonx.decode(y)
タプル
s = {1, 2}
t = s
t
Pythonx.decode(t)
キーワードリスト
u = [a: 1, b: "b", c: :c]
v = u
v
Pythonx.decode(v)
テンソル
tensor = Nx.tensor([[1, 2], [3, 4]])
py_tensor = Nx.to_list(tensor)
array = np.array(py_tensor)
array
ex_array = array.tolist()
ex_array
ex_array
|> Pythonx.decode()
|> Nx.tensor()
データフレーム
import pandas as pd
from sklearn.datasets import load_iris
iris = load_iris()
iris
df = pd.DataFrame(data = iris.data, columns = iris.feature_names)
df
ex_df =
df
|> Pythonx.decode()
|> Explorer.DataFrame.new()
Kino.DataTable.new(ex_df)
py_data =
ex_df
|> Explorer.DataFrame.to_rows()
|> Pythonx.encode!()
pd.DataFrame.from_records(py_data)