#MATLABを使っている人がPythonを使うときの注意点
仕事で使用しているMATLABとPythonの注意点が書かれたサイトがあったので、備忘録として残しておきます。
###・MATLAB に慣れた人が Python を始めるときの11の注意点
https://datachemeng.com/matlab_to_python/
Pythonを使い始めてハマったこと
##1."="による代入は値のコピーではなく、参照になっている。意図しないデータ変更が行われる可能性あり
対策 値をコピーしたい場合は .copy()を使うようにする。
import numpy as np
# =============================================================================
# b += 5 -> 元のaも変化する。
# =============================================================================
a = np.array([1,2,3])
print('a = ')
print(a)
print('\n')
b = a
b += 5 #元のaも変化する。
print('b = a , b += 5 を実行後')
print('a = ')
print(a)
print('b = ')
print(b)
print('\n')
# =============================================================================
# 'b = a , b = b + 5 -> 元のaは変化しない。
# =============================================================================
a = np.array([1,2,3])
b = a
b = b + 5 #元のaは変化しない。
print('b = a ,b = b + 5 を実行語')
print('a = ')
print(a)
print('b = ')
print(b)
print('\n')
# =============================================================================
# 'b = a , b[0] = 100 ->元のaも変化する。
# =============================================================================
a = np.array([1,2,3])
b = a
b[0] = 100
print('b = a ,b[0] = 100 を実行後')
print('a = ')
print(a)
print('b = ')
print(b)
print('\n')
# =============================================================================
# b = a.copy() b[0] = 100 ->元のaは変化しない。
# =============================================================================
a = np.array([1,2,3])
b = a.copy()
b[0] = 100
print('b = a.copy(),b[0] = 100 を実行後')
print('a = ')
print(a)
print('b = ')
print(b)
print('\n')
a =
[1 2 3]
b = a , b += 5 を実行後
a =
[6 7 8]
b =
[6 7 8]
b = a ,b = b + 5 を実行語
a =
[1 2 3]
b =
[6 7 8]
b = a ,b[0] = 100 を実行後
a =
[100 2 3]
b =
[100 2 3]
b = a.copy(),b[0] = 100 を実行後
a =
[1 2 3]
b =
[100 2 3]
##2.配列の型変換が自動で行われない。(配列要素に対して演算を行う場合のみ)