Python-data-structure-python-matrix

提供:Dev Guides
移動先:案内検索

Python-マトリックス

マトリックスは、各データ要素が厳密に同じサイズである2次元配列の特殊なケースです。 そのため、すべての行列も2次元配列ですが、その逆はありません。 行列は、多くの数学および科学計算のための非常に重要なデータ構造です。 前の章で2つの次元配列データ構造についてすでに説明したように、この章では行列に固有のデータ構造操作に焦点を当てます。

また、行列データの操作にnumpyパッケージを使用しています。

マトリックスの例

午前、昼、夕方、および深夜に測定された1週間の温度を記録する場合を考えます。 配列とnumpyで使用可能なreshapeメソッドを使用して、7X5マトリックスとして表示できます。

from numpy import *
a = array([[Mon',18,20,22,17],['Tue',11,18,21,18],
           ['Wed',15,21,20,19],['Thu',11,20,22,21],
           ['Fri',18,17,23,22],['Sat',12,22,20,18],
           ['Sun',13,15,19,16]])

m = reshape(a,(7,5))
print(m)

上記のデータは、次のように2次元配列として表すことができます。

[[Mon' '18' '20' '22' '17']
 ['Tue' '11' '18' '21' '18']
 ['Wed' '15' '21' '20' '19']
 ['Thu' '11' '20' '22' '21']
 ['Fri' '18' '17' '23' '22']
 ['Sat' '12' '22' '20' '18']
 ['Sun' '13' '15' '19' '16']]

マトリックス内の値へのアクセス

マトリックス内のデータ要素には、インデックスを使用してアクセスできます。 アクセス方法は、2次元配列でデータにアクセスする方法と同じです。

from numpy import*
m = array([[Mon',18,20,22,17],['Tue',11,18,21,18],
           ['Wed',15,21,20,19],['Thu',11,20,22,21],
           ['Fri',18,17,23,22],['Sat',12,22,20,18],
           ['Sun',13,15,19,16]])

# Print data for Wednesday
print(m[2])

# Print data for friday evening
print(m[4][3])

上記のコードが実行されると、次の結果が生成されます-

['Wed', 15, 21, 20, 19]
23

行を追加する

from numpy import *
m = array([[Mon',18,20,22,17],['Tue',11,18,21,18],
           ['Wed',15,21,20,19],['Thu',11,20,22,21],
           ['Fri',18,17,23,22],['Sat',12,22,20,18],
           ['Sun',13,15,19,16]])

m_r = append(m,[[Avg',12,15,13,11]],0)

print(m_r)

上記のコードが実行されると、次の結果が生成されます-

[[Mon' '18' '20' '22' '17']
 ['Tue' '11' '18' '21' '18']
 ['Wed' '15' '21' '20' '19']
 ['Thu' '11' '20' '22' '21']
 ['Fri' '18' '17' '23' '22']
 ['Sat' '12' '22' '20' '18']
 ['Sun' '13' '15' '19' '16']
 ['Avg' '12' '15' '13' '11']]

列を追加する

insert()メソッドを使用して、行列に列を追加できます。 ここで、列を追加するインデックスと、追加された列の新しい値を含む配列に言及する必要があります。 次の例では、先頭から5番目の位置に新しい列を追加します。

from numpy import*
m = array([[Mon',18,20,22,17],['Tue',11,18,21,18],
           ['Wed',15,21,20,19],['Thu',11,20,22,21],
           ['Fri',18,17,23,22],['Sat',12,22,20,18],
           ['Sun',13,15,19,16]])

m_c = insert(m,[5],[[print(m_c)

上記のコードが実行されると、次の結果が生成されます-

[[Mon' '18' '20' '22' '17' '1']
 ['Tue' '11' '18' '21' '18' '2']
 ['Wed' '15' '21' '20' '19' '3']
 ['Thu' '11' '20' '22' '21' '4']
 ['Fri' '18' '17' '23' '22' '5']
 ['Sat' '12' '22' '20' '18' '6']
 ['Sun' '13' '15' '19' '16' '7']]

マトリックスから行を削除する

delete()メソッドを使用して、行列から行を削除できます。 行のインデックスと、行の場合は0、列の場合は1である軸値も指定する必要があります。

 from numpy import *
m = array([[Mon',18,20,22,17],['Tue',11,18,21,18],
           ['Wed',15,21,20,19],['Thu',11,20,22,21],
           ['Fri',18,17,23,22],['Sat',12,22,20,18],
           ['Sun',13,15,19,16]])

m = delete(m,[2],0)

print(m)

上記のコードが実行されると、次の結果が生成されます-

[[Mon' '18' '20' '22' '17']
 ['Tue' '11' '18' '21' '18']
 ['Thu' '11' '20' '22' '21']
 ['Fri' '18' '17' '23' '22']
 ['Sat' '12' '22' '20' '18']
 ['Sun' '13' '15' '19' '16']]

マトリックスから列を削除する

delete()メソッドを使用して、マトリックスから列を削除できます。 列のインデックスと、行の場合は0、列の場合は1である軸の値を指定する必要があります。

from numpy import*
m = array([[Mon',18,20,22,17],['Tue',11,18,21,18],
           ['Wed',15,21,20,19],['Thu',11,20,22,21],
           ['Fri',18,17,23,22],['Sat',12,22,20,18],
           ['Sun',13,15,19,16]])

m = delete(m,s_[2],1)

print(m)

上記のコードが実行されると、次の結果が生成されます-

[[Mon' '18' '22' '17']
 ['Tue' '11' '21' '18']
 ['Wed' '15' '20' '19']
 ['Thu' '11' '22' '21']
 ['Fri' '18' '23' '22']
 ['Sat' '12' '20' '18']
 ['Sun' '13' '19' '16']]

マトリックス内の行を更新する

マトリックスの行の値を更新するには、行のインデックスで値を再割り当てするだけです。 以下の例では、木曜日のデータのすべての値がゼロとしてマークされています。 この行のインデックスは3です。

from numpy import *
m = array([[Mon',18,20,22,17],['Tue',11,18,21,18],
           ['Wed',15,21,20,19],['Thu',11,20,22,21],
           ['Fri',18,17,23,22],['Sat',12,22,20,18],
           ['Sun',13,15,19,16]])

m[3] = ['Thu',0,0,0,0]

print(m)

上記のコードが実行されると、次の結果が生成されます-

[[Mon' '18' '20' '22' '17']
 ['Tue' '11' '18' '21' '18']
 ['Wed' '15' '21' '20' '19']
 ['Thu' '0' '0' '0' '0']
 ['Fri' '18' '17' '23' '22']
 ['Sat' '12' '22' '20' '18']
 ['Sun' '13' '15' '19' '16']]