18
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

『機械学習のエッセンス(http://isbn.sbcr.jp/93965/)』のPythonサンプルをJuliaで書き換えてみる。(第04章04疎行列)

Posted at

はじめに

『機械学習のエッセンス(http://isbn.sbcr.jp/93965/)』のPythonサンプルをJuliaで書き換えてみる。(第04章03配列の基本計算)の続きです。

疎行列の操作

JuliaにはSparse Arraysモジュールというのがあるようです。
https://docs.julialang.org/en/v1/stdlib/SparseArrays/index.html

  • JuliaはIndexが1からなので、配列の番号はすべて本よりプラス1しています。行列の番号と同じになるので場合によってはわかりやすいですね。
julia> using SparseArrays

julia> a = spzeros(4, 5)
4×5 SparseMatrixCSC{Float64,Int64} with 0 stored entries

julia> a[1, 2]
0.0

julia> a[1, 2] = 1
1

julia> a[1, 4] = 2
2

julia> a[3, 3] = 3
3

julia> a[4, 5] = 4
4

julia> a
4×5 SparseMatrixCSC{Float64,Int64} with 4 stored entries:
  [1, 2]  =  1.0
  [3, 3]  =  3.0
  [1, 4]  =  2.0
  [4, 5]  =  4.0

julia> Array(a)
4×5 Array{Float64,2}:
 0.0  1.0  0.0  2.0  0.0
 0.0  0.0  0.0  0.0  0.0
 0.0  0.0  3.0  0.0  0.0
 0.0  0.0  0.0  0.0  4.0

julia> b = spzeros(5, 4)
5×4 SparseMatrixCSC{Float64,Int64} with 0 stored entries

julia> b[1, 3] = 1
1

julia> b[2, 3] = 2
2

julia> b[3, 4] = 3
3

julia> b[4, 4] = 4
4

julia> Array(b)
5×4 Array{Float64,2}:
 0.0  0.0  1.0  0.0
 0.0  0.0  2.0  0.0
 0.0  0.0  0.0  3.0
 0.0  0.0  0.0  4.0
 0.0  0.0  0.0  0.0
  • 行列積の計算
julia> c = a * b
4×4 SparseMatrixCSC{Float64,Int64} with 3 stored entries:
  [1, 3]  =  2.0
  [1, 4]  =  8.0
  [3, 4]  =  9.0

julia> Array(c)
4×4 Array{Float64,2}:
 0.0  0.0  2.0  8.0
 0.0  0.0  0.0  0.0
 0.0  0.0  0.0  9.0
 0.0  0.0  0.0  0.0
  • csr_matrixとcsc_matrix

scipy.sparseにはcsr_matrixcsc_matrixという型があって、本でもそれについて書かれています。Juliaにもあるのでしょうか?
上記で行列aを作成すると4×5 SparseMatrixCSC{Float64,Int64} with 0 stored entriesというメッセージが表示されます。SparseMatrixCSCとあるのでデフォルトでCSC型になるようです。

Juliaで型を調べて見ましたがSparseMatrixCRCという型はないようです。

julia> SparseMatrixCSC
SparseMatrixCSC

julia> SparseMatrixCRC
ERROR: UndefVarError: SparseMatrixCRC not defined

Juliaでcsr_matrixに相当するものはわかりませんでした。(デフォルトの配列がすでに行を取り出す操作が高速なのかもしれません。)
もう少し勉強してみます。

18
13
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
18
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?