【Pythonベースシリーズ1】numpyモジュールによるマトリクス関連操作
6228 ワード
Pythonのnumpyライブラリはマトリクス関連の操作を容易に行うことができます.本文の主な参考https://www.cnblogs.com/chamie/p/4870078.html自分で書いた他の内容を追加して、記録して、自分が必要とする学生が調べるのに便利です.権利侵害は削除されます.
目次 numpy導入 マトリックス作成 行列変換、分割 特徴値、特徴ベクトル、行列式、奇異値分解など を求める.マトリックス、リスト、配列の変換 1.numpyインポート
2.マトリックス作成
2.1次元または2次元の配列を使用して作成
2.2一般的な作成方法
3.一般的な演算
3.1行列乗算
3.2求逆と転置
3.3行列の合計、最大最小値
3.4マトリックスのスライスとマージ
4.特徴値、特徴ベクトル、行列式、奇異値分解などを求める
5.マトリックス、リスト、配列の変換
目次
from numpy import * # numpy
import numpy as np # ,np , 。
2.マトリックス作成
2.1次元または2次元の配列を使用して作成
>>> from numpy import *
>>> a1=array([1,2,3])
>>> a1
array([1, 2, 3])
>>> a1=mat(a1)
>>> a1
matrix([[1, 2, 3]])
>>> shape(a1) #
(1, 3)
>>> b=matrix([1,2,3])
>>> shape(b)
(1, 3)
2.2一般的な作成方法
>>>data1=mat(zeros((3,3))) # 3*3 , zeros tuple (3,3)
>>> data1
matrix([[ 0., 0., 0.],
[ 0., 0., 0.],
[ 0., 0., 0.]])
>>>data2=mat(ones((2,4))) # 2*4 1 , , int , dtype=int
>>> data2
matrix([[ 1., 1., 1., 1.],
[ 1., 1., 1., 1.]])
>>>data3=mat(random.rand(2,2)) # random numpy random ,random.rand(2,2) , #matrix
>>> data3
matrix([[ 0.57341802, 0.51016034],
[ 0.56438599, 0.70515605]])
>>>data4=mat(random.randint(10,size=(3,3))) # 3*3 0-10 ,
>>> data4
matrix([[9, 5, 6],
[3, 0, 4],
[6, 0, 7]])
>>>data5=mat(random.randint(2,8,size=(2,5))) # 2-8
>>> data5
matrix([[5, 4, 6, 3, 7],
[5, 3, 3, 4, 6]])
>>>data6=mat(eye(2,2,dtype=int)) # 2*2
>>> data6
matrix([[1, 0],
[0, 1]])
a1=[1,2,3]
a2=mat(diag(a1)) # 1、2、3
>>> a2
matrix([[1, 0, 0],
[0, 2, 0],
[0, 0, 3]])
3.一般的な演算
3.1行列乗算
#
>>>a1=mat([1,2]);
>>>a2=mat([[1],[2]]);
>>>a3=a1*a2 #1*2 2*1 , 1*1
>>> a3
matrix([[5]])
#
>>>a1=mat([1,1]);
>>>a2=mat([2,2]);
>>>a3=multiply(a1,a2)
>>> a3
matrix([[2, 2]])
#
>>>a1=mat([2,2]);
>>>a2=a1*2>>>a2
matrix([[4, 4]])
3.2求逆と転置
#
>>>a1=mat(eye(2,2)*0.5)
>>> a1
matrix([[ 0.5, 0. ],
[ 0. , 0.5]])
>>>a2=a1.I # matrix([[0.5,0],[0,0.5]])
>>> a2
matrix([[ 2., 0.],
[ 0., 2.]])
#
>>> a1=mat([[1,1],[0,0]])
>>> a1
matrix([[1, 1],
[0, 0]])
>>> a2=a1.T
>>> a2
matrix([[1, 0],
[1, 0]])
3.3行列の合計、最大最小値
>>>a1=mat([[1,1],[2,3],[4,2]])
>>> a1
matrix([[1, 1],
[2, 3],
[4, 2]])
# 、
>>>a2=a1.sum(axis=0) # , 1*2
>>> a2
matrix([[7, 6]])
>>>a3=a1.sum(axis=1) # , 3*1
>>> a3
matrix([[2],
[5],
[6]])
>>>a4=sum(a1[1,:]) # ,
>>> a4
# 0 :1+1; 2 :2+3; 3 :4+2
# 、
>>>a1.max() # a1 ,
>>>a2=max(a1[:,1]) # , 1*1
>>> a2
matrix([[3]])
>>>a1[1,:].max() # ,
>>>np.max(a1,0) # , numpy max
matrix([[4, 3]])
>>>np.max(a1,1) # ,
matrix([[1],
[3],
[4]])
>>>np.argmax(a1,0) #
matrix([[2, 1]])
>>>np.argmax(a1[1,:]) #
3.4マトリックスのスライスとマージ
#
>>>a=mat(ones((3,3)))
>>> a
matrix([[ 1., 1., 1.],
[ 1., 1., 1.],
[ 1., 1., 1.]])
>>>b=a[1:,1:] #
>>> b
matrix([[ 1., 1.],
[ 1., 1.]])
#
>>>a=mat(ones((2,2)))
>>> a
matrix([[ 1., 1.],
[ 1., 1.]])
>>>b=mat(eye(2))
>>> b
matrix([[ 1., 0.],
[ 0., 1.]])
>>>c=vstack((a,b)) # ,
>>> c
matrix([[ 1., 1.],
[ 1., 1.],
[ 1., 0.],
[ 0., 1.]])
>>>d=hstack((a,b)) # , ,
>>> d
matrix([[ 1., 1., 1., 0.],
[ 1., 1., 0., 1.]])
4.特徴値、特徴ベクトル、行列式、奇異値分解などを求める
import numpy as np
M = np.array([[1,1],[7,7]])
# a b
a, b = np.linalg.eig(M)
print(a, b)
#
e = np.linalg.det(M)
print(e)
# U, D, Vt
U, D, Vt = np.linalg.svd(M)
print(U, D, Vt)
5.マトリックス、リスト、配列の変換
# , , :
l1=[[1],'hello',3]
#numpy , , :
>>>a=array([[2],[1]])
>>> a
array([[2],
[1]])
>>>dimension=a.ndim
>>> dimension
>>>m,n=a.shape
>>> m
>>> n
>>>number=a.size #
>>> number
>>>str=a.dtype #
>>> str
dtype('int64')
#numpy 、 、
>>>a1=[[1,2],[3,2],[5,2]] #
>>> a1
[[1, 2], [3, 2], [5, 2]]
>>>a2=array(a1) #
>>> a2
array([[1, 2],
[3, 2],
[5, 2]])
>>>a3=mat(a1) #
>>> a3
matrix([[1, 2],
[3, 2],
[5, 2]])
>>>a4=array(a3) #
>>> a4
array([[1, 2],
[3, 2],
[5, 2]])
>>>a41=a3.getA() #
>>>a41
array([[1,2]
[3,2]
[5,2]])
>>>a5=a3.tolist() #
>>> a5
[[1, 2], [3, 2], [5, 2]]
>>>a6=a2.tolist() #
>>> a6
[[1, 2], [3, 2], [5, 2]]
# , , , tolist() , 。 :
>>>a1=[1,2,3] #
>>>a2=array(a1)
>>> a2
array([1, 2, 3])
>>>a3=mat(a1)
>>> a3
matrix([[1, 2, 3]])
>>> a4=a2.tolist()
>>> a4
[1, 2, 3]
>>> a5=a3.tolist()
>>> a5
[[1, 2, 3]]
>>> a6=(a4==a5)
>>> a6
False
>>> a7=(a4 is a5[0])
>>> a7
True
# , :
>>> dataMat=mat([1])
>>> val=dataMat[0,0] # ,
>>> val
1