1.(コピーと行列ので、より多くのメモリを節約する、以上を推奨マット、一般的に、ソースコードを参照してください)行列を作成します。
impory numpy as np
### 创建矩阵-----二维
##使用mat函数创建矩阵
m1 = np.mat("1 2 3;3 4 5;5 6 7") ## 空格隔开列,分号隔开行
print(m1)
print(type(m1))
输出结果:
[[1 2 3]
[3 4 5]
[5 6 7]]
<class 'numpy.matrix'>
######################################################
m2 = np.mat([[1,2,3],[4,5,6],[7,8,9]])
print(m2)
print(type(m2))
输出结果:
[[1 2 3]
[4 5 6]
[7 8 9]]
<class 'numpy.matrix'>
#########################################################
##使用matrix函数创建矩阵
m3 = np.matrix([[1,2,3],[2,3,4],[3,4,5]])
print(m3)
print(type(m3))
输出结果:
[[1 2 3]
[4 5 6]
[7 8 9]]
<class 'numpy.matrix'>
2.コンビネーションマトリックス
import numpy as np
###使用bmat函数合成矩阵
m1 = np.mat("1 2 3;3 4 5;5 6 7")
print("m1:\n",m1)
m2 = np.mat([[1,2,3],[4,5,6],[7,8,9]])
print("m2:\n",m2)
###直接组合矩阵
m3 = np.bmat([[m1,m2],[m2,m1]])
print("m3:\n",m3)
m3 = np.bmat('m1,m2;m2,m1') ##逗号分开列,分号隔开行。
输出结果:
m1:
[[1 2 3]
[3 4 5]
[5 6 7]]
m2:
[[1 2 3]
[4 5 6]
[7 8 9]]
m3:
[[1 2 3 1 2 3]
[3 4 5 4 5 6]
[5 6 7 7 8 9]
[1 2 3 1 2 3]
[4 5 6 3 4 5]
[7 8 9 5 6 7]]
3.行列演算
import numpy as np
m1 = np.mat([[1,2,3],[2,3,4]])
print('m1:\n',m1)
输出结果:
m1:
[[1 2 3]
[2 3 4]]
### 对应元素与数相乘
m2 = m1*3
print("m2:\n",m2)
输出结果:
[[ 3 6 9]
[ 6 9 12]]
#################################################
####矩阵与数相加减(对应元素位置相加减)
m3 = np.mat([[1,1,1],[1,1,1]])
m = m1+m3
print(m)
输出结果:
[[0 1 2]
[1 2 3]]
###################################################
### 矩阵相乘
## m,n*n,l = m,l 左矩阵列数必须等于右矩阵行数
m1 = np.mat([[1,2,3],[4,5,6]])
m2 = np.mat([[1,2],[1,1],[1,1]])
print(m1)
print(m2)
m3 = m1*m2
print(m3)
输出结果:
[[1 2 3]
[4 5 6]]
[[1 2]
[1 1]
[1 1]]
[[ 6 7]
[15 19]]
#################################3##
推荐使用matmul,dot
m1 = np.mat([[1,2,3],[4,5,6]])
m2 = np.mat([[1,2],[1,1],[1,1]])
m3 = np.matmul(m1,m2)
m3 = np.dot(m1,m2)
print(m3)
输出结果:
[[ 6 7]
[15 19]]
####################################################
###矩阵特有的属性
m = np.mat('1 0 3;2 8 4;3 7 5')
print('m',m)
print('m的转置',m.T) ### 行列互换
print('m的共轭转置',m.H) ##先共轭再转置
print('m的逆',m.I) ## m* 逆矩阵 = E(单位矩阵)
print('m的视图',m.A)
print('m的视图类型',type(m.A))
输出结果:
m [[1 0 3]
[2 8 4]
[3 7 5]]
m的转置 [[1 2 3]
[0 8 7]
[3 4 5]]
m的共轭转置 [[1 2 3]
[0 8 7]
[3 4 5]]
m的逆 [[-0.66666667 -1.16666667 1.33333333]
[-0.11111111 0.22222222 -0.11111111]
[ 0.55555556 0.38888889 -0.44444444]]
m的视图 [[1 0 3]
[2 8 4]
[3 7 5]]
m的视图类型 <class 'numpy.ndarray'>
4.ufunc機能
汎用関数(ユニバーサル機能)、配列のすべての要素を操作することができる機能の完全な名前。
出力としてnumpyのアレイにおいては、アレイ動作の各要素のために必要ではない、数学ライブラリよりも動作効率が機能する
より高いです。
四則演算:プラス(+)、減算( - )、乗算(*)、除算(/)、電源(**)。配列表現との間の四つの動作
アレイ内の各要素のために、4つの動作で、形状が同じでなければなりません。
比較演算子:>、<、==、> =、<=、=、!。動作は、比較の結果は、ブール配列、各要素である返す
各配列要素の比較結果に対応します。
論理演算:論理「または」を表すnp.any機能は、np.all関数は論理「と」を表します。操作の結果は、ブール値を返します。
import numpy as np
### 创建数组
arr1 = np.arange(4).reshape(2,2)
print('arr1:',arr1)
arr2 = np.array([[1,2],[1,2]])
print('arr2:',arr2)
###加法-----对应元素的相加
arr_new = arr1+arr2
print(arr_new)
####减法----对应元素的相减
arr_new = arr1-arr2
print(arr_new)
####乘法----对应元素相乘,与矩阵相乘不同
arr_new = arr1*arr2
print(arr_new)
####除法-----对应元素相除,分母不能为0
arr_new = arr1/arr2
print(arr_new)
####比较运算-------返回bool值
print(arr1>arr2)
print(arr1>=arr2)
print(arr1<arr2)
print(arr1==arr2)
#####逻辑运算
## any all
print(np.any(arr1==arr2)) ###只要一个满足条件,则True
print(np.all(arr1==arr2)) ###全部满足条件,才True
输出结果:
arr1: [[0 1]
[2 3]]
arr2: [[1 2]
[1 2]]
[[1 3]
[3 5]]
[[-1 -1]
[ 1 1]]
[[0 2]
[2 6]]
[[0. 0.5]
[2. 1.5]]
[[False False]
[ True True]]
[[False False]
[ True True]]
[[ True True]
[False False]]
[[False False]
[False False]]
False
False
放送放送機構5.ufunc機能(放送)は異なる形状のアレイとの間の演算を実行する方法を指します。私たちは、4元はに従う必要が
あります。
1.入力配列は全て最長アレイ状に並んでいる、それが先行するいくつかの形状未満で
満たしました。
2.出力アレイ形状は、アレイ状の各入力軸の最大値です。
3.同じ軸は、入力アレイと出力アレイ長又は1の長さの軸に対応する場合、配列は、であることができる
それ以外の場合はエラーを計算するのに十分。
入力配列の長さは、この計算の軸に沿って、軸1 4.この軸上の値の最初のセットで使用されています
import numpy as np
arr1 = np.array([[0,0,0,0],[1,1,1,1],[2,2,2,2],[3,3,3,3]])
print(arr1)
print('arr1的shape:',arr1.shape)
arr2 = np.array([1,2,3,4])
print(arr2)
print('arr2的shape',arr2.shape)
##相加
arr_new = arr1+arr2
print('arr_new:',arr_new)
输出结果:
[[0 0 0 0]
[1 1 1 1]
[2 2 2 2]
[3 3 3 3]]
arr1的shape: (4, 4)
[1 2 3 4]
arr2的shape (4,)
arr_new: [[1 2 3 4]
[2 3 4 5]
[3 4 5 6]
[4 5 6 7]]