LoginSignup
0
1

More than 1 year has passed since last update.

Julia Arry型(配列型)の簡単な演算

Last updated at Posted at 2022-07-31

Arry型(配列型)の簡単な演算

  • juliaでは配列型をArrayという
  • 演算はPythonなどと異なる結果になるので要注意

一般的な方法で代入

data1_ary = [1,2,3]
#=
3-element Vector{Int64}:
 1
 2
 3
=#

配列を増やしたいときの注意点

2倍にすると「データの値自身が2倍に」

data2_ary = data1_ary*2  #配列数は増えずに値が変わる。
#=
3-element Vector{Int64}:
 2
 4
 6
=#

pythonの場合「配列自身が2倍」になる

# python 3
print(data1_ary*2)
 # [1, 2, 3, 1, 2, 3]

したがって以下などは要注意

#配列を0x10個埋め尽くしたい
zero10_arry = [0]*10
#zero10_arry は[0]となっている
#内包表記など別手段で
zero10_arry =[0 for i in 1:10]

データを演算するときの注意点

各データにアクセスするときはドット演算子を使う

data2_ary = data1_ary .*2 #ドット演算子は配列内のデータにアクセスする。(配列単位ではなくデータ単位での演算)
#=
3-element Vector{Int64}:
 2
 4
 6
=#

文字列を扱うとき やはりドット演算子なしではできない。

dataStr1_ary = ["1","2","3"]
dataStr2_ary = dataStr1_ary *2 #MethodError: no method matching *(::String, ::Int64)

ドット演算子を使って各データを演算すればOK

dataStr2_ary = dataStr1_ary .*"&"
#=
3-element Vector{String}:
 "1&"
 "2&"
 "3&"
=#

ベクトル演算をするときの簡単な注意点

[a,b,c]*[d e f]型の場合
2次元以上ならば可能だが1次元だとできない

data1_ary*[2 1] 
#=
3×2 Matrix{Int64}:
 2  1
 4  2
 6  3
=#
data1_ary*[2 2 3] 
#=
3×3 Matrix{Int64}:
 2  2  3
 4  4  6
 6  6  9
=#
data1_ary*[2] 
#上の2つはできるがこれはエラー MethodError: no method matching *(::Vector{Int64}, ::Vector{Int64})

[a,b,c].*[d e f]型の場合 (ドット演算子アリ)

data1_ary.*[2] #こちらはOK
#=
3-element Vector{Int64}:
 2
 4
 6
=#

data1_ary.*[2 4]
#=
3×2 Matrix{Int64}:
 2   4
 4   8
 6  12
=#

data1_ary.*[2 3 4]
#=
3×3 Matrix{Int64}:
 2  3   4
 4  6   8
 6  9  12
=#

参考図書

1から始めるプログラミング

Juliaプログラミングクックブック

天才プログラマー タンメイが教える Julia超入門

0
1
5

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
0
1