numpy——np.array、np.matrix、np.matの区別及び(*)、np.multiply、np.dot乗算の違い
文書ディレクトリ 【1】np.array,np.matrix,np.matの違い (1)np.Arrayと後者の違い (2)np.matとnp.matrixの違い 【3】行列乗算(*)、np.multiply、np.dotの違い (1)乗算された両者がarrayであるとき (2)乗算された両者がmat/matrixである場合 (3)まとめ
【1】np.array,np.matrix,np.matの違い
(1)np.arrayと後者の違い
データ型が異なるnp.arrayはnumpyを生成する.ndarrayタイプのデータは、マトリクスの意味での乗算はできません.np.matrix,np.matはnumpyを生成する.matrixタイプデータ、マトリクス乗算は次の例を参照
解釈:arrayは配列を作成し、shapeは(6,)ですが、reshapeを使用すると配列をマトリクスに変換できます.(下例参照)np.arrayとnp.arangeの違い:np.arrayは自分で配列を手動で入力しなければならない.np.aranggeはrangeを直接使用するのと同様に、一連の数字を生成することができます.しかし、両者が生成したのは配列が行列ではない.
1次元配列と1次元行列の違い(12,)は配列を表し、1つだけである[].(1,12)は1次元行列で,左右に2つずつ[]があり,matrixは2次元配列を2次元行列に変えることができ,配列を1次元行列に変えることができる.
(2)np.matとnp.matrixの違い
配列からマトリクスにnpが変化する.matとnp.matrixの2つの方法.npを使用する.mat後、元の配列を変更すると、次のようにマトリクスも変化します.
ただしnpを用いる.matrix後、元の配列を変更すると、マトリクスは次のように変化しません.
行列乗算(*)、np.multiply、np.dotの違い
注意:異なるタイプのデータは、3つのデータを使用する場合に効果が異なります.
(1)乗算された両者がarrayである場合
npを使用する.dotはマトリクスの乗算を行うことができる(2×3と3×2=2×2乗算後加算)ですが、積の結果タイプは、真のマトリクス乗算ではないことを示しますが、マトリクス乗算の法則を守ることができます.
行列乗算規則に合致しない場合は、演算を行うには、2つの数のグループの形式が完全に同じでなければなりません.a*bは対応する要素の積であり、multiplyも対応する要素の積であり、積の結果タイプは
(2)乗算された両者がmat/matrixの場合
デフォルトのa*bとdot(a,b)は行列の積(3)です.×3と3×1=3×1即ちm×nとn×y=m×y)、結果タイプは
Multiplyは対応する要素の積に変換され、乗算条件は2つのマトリクスが完全に同じフォーマットまたは行数が同じで、列数が1(2)である.×3と2×1=3×3即ちm×nとm×1=m×n),対応位置は乗算のみ加算しない
(3)まとめ
np.dotは、データがarrayであるもmatrixであるもマトリクス乗算npを表す.Multiplyは、arrayまたはmatrixにかかわらず、対応する位置乗算を表す
データ型がarray、(*)およびnpの場合.Multiplyは対応する位置に乗算、npを表す.dotはマトリクス形式の乗算を表す
データ型がmatrixの場合、np.Multiplyは、対応する位置位置に乗算、(*)とnpを表す.dotはマトリクス形式の乗算を表す
【1】np.array,np.matrix,np.matの違い
(1)np.arrayと後者の違い
データ型が異なるnp.arrayはnumpyを生成する.ndarrayタイプのデータは、マトリクスの意味での乗算はできません.np.matrix,np.matはnumpyを生成する.matrixタイプデータ、マトリクス乗算は次の例を参照
import numpy as np
a = np.mat('1 2 3;3 4 5;1 2 3')
b = np.mat([[1, 2], [3, 4]])
print(a)
print(b)
'''
[[1 2 3]
[3 4 5]
[1 2 3]]
[[1 2]
[3 4]]
'''
print(type(a))
print(type(b))
'''
<class 'numpy.matrix'>
<class 'numpy.matrix'>
'''
c = np.array([[1, 2], [3, 4]])
print(c)
'''
[[1 2]
[3 4]]
'''
print(type(c)) #<class 'numpy.ndarray'>
解釈:arrayは配列を作成し、shapeは(6,)ですが、reshapeを使用すると配列をマトリクスに変換できます.(下例参照)np.arrayとnp.arangeの違い:np.arrayは自分で配列を手動で入力しなければならない.np.aranggeはrangeを直接使用するのと同様に、一連の数字を生成することができます.しかし、両者が生成したのは配列が行列ではない.
a = np.arange(12).reshape(3,4)
print(a)
'''
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
'''
b = np.array([1,2,3,4,5,6])
print(b.shape) #(6,)
c = b.reshape(2,3)
print(c.shape) #(2, 3)
1次元配列と1次元行列の違い(12,)は配列を表し、1つだけである[].(1,12)は1次元行列で,左右に2つずつ[]があり,matrixは2次元配列を2次元行列に変えることができ,配列を1次元行列に変えることができる.
a = np.arange(12)
print(a.shape) #(12,)
#[ 0 1 2 3 4 5 6 7 8 9 10 11]
a = np.matrix(a)
print(a.shape) #(1, 12)
#[[ 0 1 2 3 4 5 6 7 8 9 10 11]]
c = np.matrix([[1,2,3,4,5,6],[7,8,9,10,11,12]], dtype=int)
print(c)
'''
[[ 1 2 3 4 5 6]
[ 7 8 9 10 11 12]]
'''
(2)np.matとnp.matrixの違い
配列からマトリクスにnpが変化する.matとnp.matrixの2つの方法.npを使用する.mat後、元の配列を変更すると、次のようにマトリクスも変化します.
# ndarray
x = np.array([[1, 2], [3, 4]])
# <class 'numpy.matrix'>
m = np.mat(x)
# m
print(m)
'''
[[1 2]
[3 4]]
'''
x[0,0] = 0
print(m)
'''
[[0 2]
[3 4]]
'''
ただしnpを用いる.matrix後、元の配列を変更すると、マトリクスは次のように変化しません.
# ndarray
x = np.array([[1, 2], [3, 4]])
# <class 'numpy.matrix'>
m = np.matrix(x)
# m
print(m)
'''
[[1 2]
[3 4]]
'''
x[0,0] = 0
print(m)
'''
[[1 2]
[3 4]]
'''
行列乗算(*)、np.multiply、np.dotの違い
注意:異なるタイプのデータは、3つのデータを使用する場合に効果が異なります.
(1)乗算された両者がarrayである場合
npを使用する.dotはマトリクスの乗算を行うことができる(2×3と3×2=2×2乗算後加算)ですが、積の結果タイプは、真のマトリクス乗算ではないことを示しますが、マトリクス乗算の法則を守ることができます.
import numpy as np
a = np.array([[1,2,3],[1,1,1]])
b = np.array([[1,1],[1,1],[1,1]])
print(a)
'''
[[1 2 3]
[1 1 1]]
'''
print(b)
'''
[[1 1]
[1 1]
[1 1]]
'''
print(np.dot(a,b))
'''
[[6 6]
[3 3]]
'''
行列乗算規則に合致しない場合は、演算を行うには、2つの数のグループの形式が完全に同じでなければなりません.a*bは対応する要素の積であり、multiplyも対応する要素の積であり、積の結果タイプは
a = np.array([[1,2,3],[1,1,1]])
b = np.array([[1,1,1],[1,1,1]])
print(a)
'''
[[1 2 3]
[1 1 1]]
'''
print(b)
'''
[[1 1 1]
[1 1 1]]
'''
print(a*b)
'''
[[1 2 3]
[1 1 1]]
'''
(2)乗算された両者がmat/matrixの場合
デフォルトのa*bとdot(a,b)は行列の積(3)です.×3と3×1=3×1即ちm×nとn×y=m×y)、結果タイプは
import numpy as np
a = np.mat('1 2 3;3 4 5;1 2 3')
b = np.mat([[1],[1],[1]])
c = np.dot(a,b)
print(c)
'''
[[ 6]
[12]
[ 6]]
'''
c = a*b
print(c)
'''
[[ 6]
[12]
[ 6]]
'''
Multiplyは対応する要素の積に変換され、乗算条件は2つのマトリクスが完全に同じフォーマットまたは行数が同じで、列数が1(2)である.×3と2×1=3×3即ちm×nとm×1=m×n),対応位置は乗算のみ加算しない
import numpy as np
a = np.matrix('1 2 3;3 4 5') #
b = np.matrix([[1,1,1],[2,2,2]])
c = np.multiply(a,b)
print(c)
'''
[[ 1 2 3]
[ 6 8 10]]
'''
a = np.matrix('1 2 3;3 4 5') # 1
b = np.matrix([[1],[2]])
c = np.multiply(a,b)
print(c)
'''
[[ 1 2 3]
[ 6 8 10]]
'''
(3)まとめ
np.dotは、データがarrayであるもmatrixであるもマトリクス乗算npを表す.Multiplyは、arrayまたはmatrixにかかわらず、対応する位置乗算を表す
データ型がarray、(*)およびnpの場合.Multiplyは対応する位置に乗算、npを表す.dotはマトリクス形式の乗算を表す
データ型がmatrixの場合、np.Multiplyは、対応する位置位置に乗算、(*)とnpを表す.dotはマトリクス形式の乗算を表す