numpyの汎用関数行列

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]]

 

おすすめ

転載: blog.csdn.net/weixin_43567965/article/details/92002553