Powered by AppSignal & Oban Pro
Would you like to see your link here? Contact us

KinoPythonx

livebooks/kino/kino_pythonx.livemd

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)