MATLAB,Python,Scilab,Julia比較 その16【基本的な使い方⑥】

MATLAB,Python,Scilab,Julia比較 その16【基本的な使い方⑥】 数値計算
MATLAB,Python,Scilab,Julia比較 その16【基本的な使い方⑥】

バックナンバーはこちら。
https://www.simulationroom999.com/blog/compare-matlabpythonscilabjulia-backnumber/

はじめに

前回から、基本的な使い方の続きとしてスライシングについての話がスタート。
まずは手馴れたMATLABの場合を説明。

今回はPython(Numpy)とScilabについて。

登場人物

博識フクロウのフクさん

指差しフクロウ

イラストACにて公開の「kino_k」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=iKciwKA9&area=1

エンジニア歴8年の太郎くん

技術者太郎

イラストACにて公開の「しのみ」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=uCKphAW2&area=1

Python(Numpy)でスライシング

太郎くん
太郎くん

Python(Numpy)のスライシングもさっとやってしまおう。

フクさん
フクさん

こんな感じになる。

#スライシング
>>> A=np.array([[1,2,3], [4,5,6],[7,8,9]])
>>> A
array([[1, 2, 3],
       [4, 5, 6],
       [7, 8, 9]])

>>> A[0,1]
2


>>> A[1,1]
5


>>> A[1,2]
6


>>> A[1,:]
array([4, 5, 6])


>>> A[1,1:3]
array([5, 6])


>>> A[:,2]
array([3, 6, 9])

>>> 
太郎くん
太郎くん

基本的にはMATLABと似てはいるのだけど、
実際に設定している値は0オリジンの影響でちょっとかわっちゃうんだよね。

フクさん
フクさん

それに加えて指定した終端は範囲に含まれない

太郎くん
太郎くん

A[1,1:3]
の挙動を見ると、そこら辺が分かるね。

フクさん
フクさん

ロジックをMATLABから移植、またはMATLABへ移植する際は気を付ける必要のある仕様だな。

Scilabでスライシング

フクさん
フクさん

ぶっちゃけMATLABと全く一緒だ。

//スライシング
-->A=[1 2 3; 4 5 6; 7 8 9]
 A  =
    1.    2.    3.  
    4.    5.    6.  
    7.    8.    9.  
 
--> A(1,2)
 ans  = 
    2.  
 
-->A(2,2)
 ans  =
    5.  
 
-->A(2,3)
 ans  =
    6.  
 
-->A(2,:)
 ans  =
    4.    5.    6.  

-->A(2,2:3)
 ans  =
    5.    6.  
 
-->A(:,3)
 ans  =
    3.  
    6.  
    9. 

-->
太郎くん
太郎くん

確かに完全に一緒だ!

太郎くん
太郎くん

というか全部MATLABベースにしてくれると助かるんだけどなー。

フクさん
フクさん

まぁそれは我々の都合の話だからな。
Pythonから入った人からするとMATLABの1オリジンの方が変に見えちゃうだろうし。

太郎くん
太郎くん

最初にどの言語を触ったかでそこら辺の意見は分かれそうだね。

まとめ

フクさん
フクさん

まとめだよ。

  • Python(Numpy)でスライシングを実施。
    • 0オリジンのためMATLABと設定する数値が異なる。
    • 加えて、区間演算子の終端は範囲に指定範囲には含まれない点に注意。
  • Scilabでスライシング。
    • MATLABと同一。

バックナンバーはこちら。

コメント

タイトルとURLをコピーしました