欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python numpy中矩陣的基本用法匯總

 更新時(shí)間:2019年02月12日 10:42:40   作者:戰(zhàn)爭(zhēng)熱誠(chéng)  
這篇文章主要給大家介紹了關(guān)于Python numpy中矩陣的基本用法的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

Python矩陣的基本用法

mat()函數(shù)將目標(biāo)數(shù)據(jù)的類(lèi)型轉(zhuǎn)化成矩陣(matrix)

1,mat()函數(shù)和array()函數(shù)的區(qū)別

Numpy函數(shù)庫(kù)中存在兩種不同的數(shù)據(jù)類(lèi)型(矩陣matrix和數(shù)組array),都可以用于處理行列表示的數(shù)字元素,雖然他們看起來(lái)很相似,但是在這兩個(gè)數(shù)據(jù)類(lèi)型上執(zhí)行相同的數(shù)學(xué)運(yùn)算可能得到不同的結(jié)果,其中Numpy函數(shù)庫(kù)中的matrix與MATLAB中matrices等價(jià)。

直接看一個(gè)例子:

import numpy as np
 
a = np.mat('1 3;5 7')
b = np.mat([[1,2],[3,4]])
print(a)
print(b)
print(type(a))
print(type(b))
c = np.array([[1,3],[4,5]])
print(c)
print(type(c))

結(jié)果:

[[1 3]
 [5 7]]
[[1 2]
 [3 4]]
<class 'numpy.matrixlib.defmatrix.matrix'>
<class 'numpy.matrixlib.defmatrix.matrix'>
[[1 3]
 [4 5]]
<class 'numpy.ndarray'>

首先,mat() 函數(shù)與array()函數(shù)生成矩陣所需的數(shù)據(jù)格式有區(qū)別,mat()函數(shù)中數(shù)據(jù)可以為字符串以分號(hào)(;)分割或者為列表形式以逗號(hào)(,)分割,而array()函數(shù)中數(shù)據(jù)只能為后者形式。

其次,兩者的類(lèi)型不同,用mat函數(shù)轉(zhuǎn)換為矩陣后才能進(jìn)行一些線(xiàn)性代數(shù)的操作。

from numpy import *
 
# 構(gòu)建一個(gè)4*4的隨機(jī)數(shù)組
array_1 = random.rand(4,4)
print(array_1)
print(type(array_1))
'''
[[0.12681561 0.26644355 0.03582107 0.71475804]
 [0.01380711 0.85308305 0.37838406 0.83663897]
 [0.20034209 0.5736587 0.56692541 0.64008518]
 [0.97780979 0.129229 0.37688616 0.55341492]]
 
 <class 'numpy.ndarray'>
 '''
# 使用mat函數(shù)將數(shù)組轉(zhuǎn)化為矩陣
matrix_1 = mat(array_1)
print(matrix_1)
print(type(matrix_1))
'''
[[0.32538457 0.60674013 0.68625186 0.58957989]
 [0.26465813 0.93378939 0.12944934 0.95064032]
 [0.65683256 0.01352025 0.11932895 0.9361348 ]
 [0.11667241 0.16077876 0.50904118 0.44128675]]
 
<class 'numpy.matrixlib.defmatrix.matrix'>
'''

 2,mat()函數(shù)創(chuàng)建常見(jiàn)的矩陣

import numpy as np
 
# 創(chuàng)建一個(gè)3*3的零矩陣,矩陣這里zeros函數(shù)的參數(shù)是一個(gè)tuple類(lèi)型(3,3)
data1 = np.mat(np.zeros((3,3)))
print(data1)
'''
[[0. 0. 0.]
 [0. 0. 0.]
 [0. 0. 0.]]
 
'''
# 創(chuàng)建一個(gè)2*4的1矩陣,默認(rèn)是浮點(diǎn)型的數(shù)據(jù),如果需要時(shí)int,可以使用dtype=int
data2 = np.mat(np.ones((2,4)))
print(data2)
'''
[[1. 1. 1. 1.]
 [1. 1. 1. 1.]]
'''
 
# 這里使用numpy的random模塊
# random.rand(2,2)創(chuàng)建的是一個(gè)二維數(shù)組,但是需要將其轉(zhuǎn)化為matrix
data3 = np.mat(np.random.rand(2,2))
print(data3)
'''
[[0.62002668 0.55292404]
 [0.53018371 0.1548954 ]]
'''
 
# 生成一個(gè)3*3的0-10之間的隨機(jī)整數(shù)矩陣,如果需要指定下界可以多加一個(gè)參數(shù)
data4 = np.mat(np.random.randint(10,size=(3,3)))
print(data4)
'''
[[0 4 1]
 [7 9 9]
 [9 0 4]]
'''
 
# 產(chǎn)生一個(gè)2-8之間的隨機(jī)整數(shù)矩陣
data5 = np.mat(np.random.randint(2,8,size=(2,5)))
print(data5)
'''
[[4 6 3 3 4]
 [4 3 3 3 6]]
'''
 
# 產(chǎn)生一個(gè)2*2的對(duì)角矩陣
data6 = np.mat(np.eye(2,2,dtype=int))
print(data6)
'''
[[1 0]
 [0 1]]
'''
# 生成一個(gè)對(duì)角線(xiàn)為1,2,3的對(duì)角矩陣
a1 = [1,2,3]
a2 = np.mat(np.diag(a1))
print(a2)
'''
[[1 0 0]
 [0 2 0]
 [0 0 3]]
'''

2.1,zeros

zeros函數(shù)是生成指定維數(shù)的全0數(shù)組

>>myMat=np.zeros(3) ###生成一個(gè)一維的全0數(shù)組
>>print(myMat)
>>array([0.,0.,0.])
 
 
>>myMat1=np.zeros((3,2)) ####生成一個(gè)3*2的全0數(shù)組
>>print(myMat)
>>array([[0.,0.],
 [0.,0.]
 [0.,0.]])

2.2,ones

ones函數(shù)是用于生成一個(gè)全1的數(shù)組

>>onesMat=np.ones(3) ###1*3的全1數(shù)組
>>print(onesMat)
>>array([1.,1.,1.])
 
 
 
>>onesMat1=np.ones((2,3)) ###2*3的全1數(shù)組
>>print(onesMat1)
>>array([[1.,1.,1.],[1.,1.,1.]])

2.3,eye

eye函數(shù)用戶(hù)生成指定行數(shù)的單位矩陣

>>eyeMat=np.eye(4) 
>>print(eyeMat)
>>array([[1.,0.,0.,0.],
 [0.,1.,0.,0.],
 [0.,0.,1.,0.,],
 [0.,0.,0.,1.]])

2.4,full

numpy.full(shape,fill_value=num)用于創(chuàng)建一個(gè)自定義形狀的數(shù)組,可以自己指定一個(gè)值,用它填滿(mǎn)整個(gè)數(shù)組。

fill_value 用來(lái)填充的值,可以是數(shù)字,也可以是字符串

nd_test = np.full(shape=(2,3,4),fill_value='ai')
print(nd_test)
 
array([[['ai', 'ai', 'ai', 'ai'],
 ['ai', 'ai', 'ai', 'ai'],
 ['ai', 'ai', 'ai', 'ai']],
 
 [['ai', 'ai', 'ai', 'ai'],
 ['ai', 'ai', 'ai', 'ai'],
 ['ai', 'ai', 'ai', 'ai']]], dtype='<U2')

2.5 nonzero()

nonzero函數(shù)是numpy中用于得到數(shù)組array中非零元素的位置(數(shù)組索引)函數(shù)。它的返回值是一個(gè)長(zhǎng)度為a.ndim(數(shù)組a的軸數(shù))的元組,元組的每個(gè)元素都是一個(gè)整數(shù)數(shù)組,其值為非零元素的下標(biāo)在對(duì)應(yīng)軸上的值。

只有a中非零元素才會(huì)有索引值,那些零值元素沒(méi)有索引值,通過(guò)a[nonzero(a)]得到所有a中的非零值。

import numpy as np
 
SS = [0,0,0,0] 
re = np.array(SS)
print(SS)
print(np.nonzero(re))
'''
[0, 0, 0, 0]
(array([], dtype=int64),)
'''

a是一維數(shù)組(索引1和索引2的位置上元素的值非零)

>>> import numpy as np
>>> a = [0,2,3]
>>> b = np.nonzero(a)
>>> b
(array([1, 2], dtype=int64),)
>>> np.array(b).ndim
2

a是多維數(shù)組

from numpy import *
 
b = array([[1,1,1,0,1,1],[1,1,1,0,1,0],[1,1,1,0,1,1]])
print(b)
c = nonzero(b)
print(c)
'''
[[1 1 1 0 1 1]
 [1 1 1 0 1 0]
 [1 1 1 0 1 1]]
(array([0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 2], dtype=int64),
array([0, 1, 2, 4, 5, 0, 1, 2, 4, 0, 1, 2, 4, 5], dtype=int64))
'''

解釋一下:矩陣 b中,b[0,0] b[0,1],b[0,2],b[0,4],b[0,5],b[1,0],b[1,1],b[1,2],b[1,4],b[2,0],b[2,1],b[2,2],b[2,4],b[2,5]元素的值非零。

當(dāng)使用布爾數(shù)組直接作為下標(biāo)對(duì)象護(hù)著元組下標(biāo)對(duì)象中有布爾數(shù)組時(shí),都相當(dāng)于用nonzero()將布爾數(shù)組轉(zhuǎn)換成一組整數(shù)數(shù)組,然后使用整數(shù)數(shù)組進(jìn)行下標(biāo)計(jì)算。

nonzero(a)返回?cái)?shù)組a中值不為零的元素的下標(biāo),它的返回值是一個(gè)長(zhǎng)度為a.ndim(數(shù)組a的軸數(shù))的元組,元組的每個(gè)元素都是一個(gè)整數(shù)數(shù)組,其值為非零元素的下標(biāo)在對(duì)應(yīng)軸上的值。例如對(duì)于1維布爾數(shù)組b1,nonzero(b1)所得到的是一個(gè)長(zhǎng)度為1的元組,它表示b1[0]和b1[2]的值不為0(FALSE)。

import numpy as np
 
b1 = np.array([True,False,True,False])
res1 = np.nonzero(b1)
print(res1)
# (array([0, 2], dtype=int64),)

對(duì)于二維數(shù)組b2,nonzero(b2)所得到的是一個(gè)長(zhǎng)度為2的元組,它的第0個(gè)元素是數(shù)組a中值不為0的元素的第0個(gè)軸的下標(biāo),第一個(gè)元素則是第1軸的下標(biāo),因此從下面得到的結(jié)果可知b2[0,0] , n2[0,2]和b2[1,0]的值不為0:

b2 = np.array([[True,False,True],[True,False,False]])
res2 = np.nonzero(b2)
print(res2)
# (array([0, 0, 1], dtype=int64), array([0, 2, 0], dtype=int64))

當(dāng)布爾數(shù)組直接做維下標(biāo)時(shí),相當(dāng)于使用由nonzero()轉(zhuǎn)換之后的元組作為下標(biāo)對(duì)象:

b3 = np.arange(3*4*5).reshape(3,4,5)
res3 = b3[np.nonzero(b2)]
print(res3)
'''
[[ 0 1 2 3 4]
 [10 11 12 13 14]
 [20 21 22 23 24]]
'''

3,常見(jiàn)的矩陣運(yùn)算

3.1,矩陣相乘(*)

就是矩陣的乘法操作,要求左邊矩陣的列和右邊矩陣的行數(shù)要一致

from numpy import *
''' 1*2 的矩陣乘以2*1 的矩陣 得到1*1 的矩陣'''
 
a1 = mat([1,2])
print(a1)
a2 = mat([[1],[2]])
print(a2)
a3 = a1*a2
print(a3)
'''
[[1 2]]
[[1]
 [2]]
[[5]]
'''

3.2,矩陣點(diǎn)乘(multiply)

矩陣點(diǎn)乘則要求矩陣必須維數(shù)相等,即M*N維矩陣乘以M*N維矩陣

from numpy import *
''' 矩陣點(diǎn)乘為對(duì)應(yīng)矩陣元素相乘'''
 
a1 = mat([1,1])
print(a1)
a2 = mat([2,2])
print(a2)
a3 = multiply(a1,a2)
print(a3)
'''
[[1 1]]
[[2 2]]
[[2 2]]
'''
 
 
a1 = mat([2,2])
a2 = a1*2
print(a2)
# [[4 4]]

3.3,矩陣求逆變換(.I)

from numpy import *
''' 矩陣求逆變換:求矩陣matrix([[0.5,0],[0,0.5]])的逆矩陣'''
 
a1 = mat(eye(2,2)*0.5)
print(a1)
a2 = a1.I
print(a2)
'''
[[0.5 0. ]
 [0. 0.5]]
[[2. 0.]
 [0. 2.]]
'''

3.4,矩陣求轉(zhuǎn)置(.T)

from numpy import *
'''矩陣的轉(zhuǎn)置'''
 
a1 = mat([[1,1],[0,0]])
print(a1)
a2 = a1.T
print(a2)
'''
[[1 1]
 [0 0]]
[[1 0]
 [1 0]]
 '''

3.5,求矩陣對(duì)應(yīng)列行的最大值,最小值,和。

計(jì)算每一列,行的和

from numpy import *
'''計(jì)算每一列,行的和'''
 
a1 = mat([[1,1],[2,3],[4,5]])
print(a1)
# 列和,這里得到的是1*2的矩陣
a2=a1.sum(axis=0)
print(a2)
'''
[[7 9]]
'''
# 行和,這里得到的是3*1的矩陣
a3=a1.sum(axis=1)
print(a3)
'''
[[2]
 [5]
 [9]]
 '''
# 計(jì)算第一行所有列的和,這里得到的是一個(gè)數(shù)值
a4=sum(a1[1,:])
print(a4)
'''
5
'''

計(jì)算最大,最小值和索引

from numpy import *
'''計(jì)算每一列,行的和'''
 
a1 = mat([[1,1],[2,3],[4,5]])
print(a1)
'''
[[1 1]
 [2 3]
 [4 5]]
'''
# 計(jì)算a1矩陣中所有元素的最大值,這里得到的結(jié)果是一個(gè)數(shù)值
maxa = a1.max()
print(maxa) #5
# 計(jì)算第二列的最大值,這里得到的是一個(gè)1*1的矩陣
a2=max(a1[:,1])
print(a2) #[[5]]
# 計(jì)算第二行的最大值,這里得到的是一個(gè)一個(gè)數(shù)值
maxt = a1[1,:].max()
print(maxt) #3
# 計(jì)算所有列的最大值,這里使用的是numpy中的max函數(shù)
maxrow = np.max(a1,0)
print(maxrow) #[[4 5]]
# ;//計(jì)算所有行的最大值,這里得到是一個(gè)矩陣
maxcolumn = np.max(a1,1)
print(maxcolumn)
'''
[[1]
 [3]
 [5]]
'''
# 計(jì)算所有列的最大值對(duì)應(yīng)在該列中的索引
maxindex = np.argmax(a1,0)
print(maxindex) #[[2 2]]
# 計(jì)算第二行中最大值對(duì)應(yīng)在改行的索引
tmaxindex = np.argmax(a1[1,:])
print(tmaxindex) # 1

3.6,矩陣的分隔和合并?。╲stack  hstack)

矩陣的分割,同列表和數(shù)組的分割一致

from numpy import *
''' 矩陣的分隔,同列表和數(shù)組的分隔一致'''
 
a = mat(ones((3,3)))
print(a)
# 分隔出第二行以后的行和第二列以后的列的所有元素
b = a[1:,1:]
print(b)
'''
[[1. 1. 1.]
 [1. 1. 1.]
 [1. 1. 1.]]
[[1. 1.]
 [1. 1.]]
'''

矩陣的合并

from numpy import *
 
a = mat(ones((2,2)))
print(a)
b = mat(eye(2))
print(b)
# 按照列和并,即增加行數(shù)
c = vstack((a,b))
print(c)
# 按照行合并,即行數(shù)不變,擴(kuò)展列數(shù)
d = hstack((a,b))
print(d)
'''
[[1. 1.]
 [1. 1.]]
 
[[1. 0.]
 [0. 1.]]
 
[[1. 1.]
 [1. 1.]
 [1. 0.]
 [0. 1.]]
 
[[1. 1. 1. 0.]
 [1. 1. 0. 1.]]
'''

3.7,矩陣,列表,數(shù)組的轉(zhuǎn)換

列表可以修改,并且列表中元素可以使不同類(lèi)型的數(shù)據(jù),如下:

1
li =[[1],'hello',3]

numpy中數(shù)組,同一個(gè)數(shù)組中所有元素必須為同一個(gè)類(lèi)型,有幾個(gè)常見(jiàn)的屬性:

from numpy import *
 
a=array([[2],[1]])
print(a )
dimension=a.ndim
m,n=a.shape
# 元素總個(gè)數(shù)
number=a.size
print(number)
# 2
# 元素的類(lèi)型
str=a.dtype
print(str)
# int32

numpy中的矩陣也有與數(shù)組常見(jiàn)的幾個(gè)屬性,他們之間的轉(zhuǎn)換如下:

from numpy import *
 
# 列表
a1 = [[1,2],[3,2],[5,2]]
# 將列表轉(zhuǎn)化為二維數(shù)組
a2 = array(a1)
# 將列表轉(zhuǎn)化成矩陣
a3 = mat(a1)
# 將矩陣轉(zhuǎn)化成數(shù)組
a4 = array(a3)
# 將矩陣轉(zhuǎn)換成列表
a5=a3.tolist()
# 將數(shù)組轉(zhuǎn)換成列表
a6=a2.tolist()
print(type(a1))
print(type(a2))
print(type(a3))
print(type(a4))
print(type(a5))
print(type(a6))
'''
<class 'list'>
<class 'numpy.ndarray'>
<class 'numpy.matrixlib.defmatrix.matrix'>
<class 'numpy.ndarray'>
<class 'list'>
<class 'list'>
'''

注意:當(dāng)列表為一維的時(shí)候,將他們轉(zhuǎn)換成數(shù)組和矩陣后,再通過(guò)tolist()轉(zhuǎn)換成列表是不相同的,這里需要做一些小小的修改,如下:

from numpy import *
 
a1=[1,2,3]
print(a1)
print(type(a1))
a2=array(a1)
print(a2)
print(type(a2))
a3=mat(a1)
print(a3)
print(type(a3))
'''
[1, 2, 3]
<class 'list'>
[1 2 3]
<class 'numpy.ndarray'>
[[1 2 3]]
<class 'numpy.matrixlib.defmatrix.matrix'>
 
'''
a4=a2.tolist()
print(a4)
print(type(a4))
a5=a3.tolist()
print(a5)
print(type(a5))
'''
[1, 2, 3]
<class 'list'>
[[1, 2, 3]]
<class 'list'>
'''
 
a6=(a4 == a5)
print(a6)
print(type(a6))
a7=(a4 is a5[0])
print(a7)
print(type(a7))
'''
False
<class 'bool'>
False
<class 'bool'>
'''

矩陣轉(zhuǎn)換成數(shù)值,存在以下一種情況:

from numpy import *
 
dataMat=mat([1])
print(dataMat)
print(type(dataMat))
'''
[[1]]
<class 'numpy.matrixlib.defmatrix.matrix'>
'''
 
# 這個(gè)時(shí)候獲取的就是矩陣的元素的數(shù)值,而不再是矩陣的類(lèi)型
val=dataMat[0,0]
print(val)
print(type(val))
'''
1
<class 'numpy.int32'>
'''

 4, matrix.getA()

getA()是numpy的一個(gè)函數(shù),作用是將矩陣轉(zhuǎn)成一個(gè)ndarray,getA()函數(shù)和mat()函數(shù)的功能相反,是將一個(gè)矩陣轉(zhuǎn)化為數(shù)組。

如果不轉(zhuǎn),矩陣的每個(gè)元素將無(wú)法取出,會(huì)造成越界的問(wèn)題,其具體解釋如下:

matrix.getA()
   Return self as an ndarray object.
  Equivalent to np.asarray(self)
Parameters: None
Returns: __ret_: ndarray
  self as an ndarray

舉例如下:

>>> x = np.matrix(np.arange(12).reshape((3,4))); x
matrix([[ 0, 1, 2, 3],
 [ 4, 5, 6, 7],
 [ 8, 9, 10, 11]])
>>> x.getA()
array([[ 0, 1, 2, 3],
 [ 4, 5, 6, 7],
 [ 8, 9, 10, 11]])

那么為什么需要轉(zhuǎn)換呢?

因?yàn)樵诋?huà)出數(shù)據(jù)集合的函數(shù)中,代碼如下(取自機(jī)器學(xué)習(xí)實(shí)戰(zhàn)Logistic回歸最佳擬合直線(xiàn)的函數(shù))

def plotBestFit(weights):
 weights = weights.getA()
 ...
 for i in range(n):
 #分類(lèi)
 if int(labelMat[i]) == 1:
  xcord1.append(dataArr[i, 1])
  ycord1.append(dataArr[i, 2])
 else:
  xcord2.append(dataArr[i, 1])
  ycord2.append(dataArr[i, 2])

在這個(gè)代碼,我們需要取出其中每一行每一列的值

如果是矩陣的話(huà),我們測(cè)試一下:

>>> b
matrix([[1, 2, 3, 4],
 [1, 2, 3, 4],
 [1, 2, 3, 4],
 [1, 2, 3, 4]])
>>> b[1][1]
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
 File "D:\Python\lib\site-packages\numpy\matrixlib\defmatrix.py", line 284, in __getitem__
 out = N.ndarray.__getitem__(self, index)
IndexError: index 1 is out of bounds for axis 0 with size 1
>>>
>>> len(b[1])
1
>>> len(b[1][0])
1

可以發(fā)現(xiàn)我們?nèi)〕鼍仃嚨囊恍写笮≈挥?,如果你使用b[1][1],b[1][2]之類(lèi)的就會(huì)越界

當(dāng)我們轉(zhuǎn)為np.array類(lèi)型時(shí)

>>> c
array([[1, 2, 3, 4],
 [1, 2, 3, 4],
 [1, 2, 3, 4],
 [1, 2, 3, 4]])
>>> len(c[1])
4
>>> c[1][1]
2
>>>

可以看出,我們可以取出任何一個(gè)值。

Python矩陣的切片

1,行操作

li = [[1,1],[1,3],[2,3],[4,4],[2,4]]
from numpy import *
 
a = [[1,2],[3,4],[5,6]]
a = mat(a)
# 打印整個(gè)矩陣
print(a[0:])
'''
[[1 2]
 [3 4]
 [5 6]]
 '''
 
# 打印矩陣E從1行開(kāi)始到末尾行的內(nèi)容
print(a[1:])
'''
[[3 4]
 [5 6]] 
'''
 
# 表示打印矩陣E 從1行到3行的內(nèi)容
print(a[1:3])
'''
[[3 4]
 [5 6]]
 '''

2,列操作

li = [[1,1],[1,3],[2,3],[4,4],[2,4]]
from numpy import *
mat = mat(li)
# 在整個(gè)矩陣的基礎(chǔ)下,打印1列(指的是序列為1的列
print(mat[:,0])
'''
[[1]
 [1]
 [2]
 [4]
 [2]]
'''
# 在矩陣的1行到2行([1,3)) 的前提下打印兩列
# 2 列不是指兩列,而是序號(hào)為2的列
print(mat[1:3,1])
'''
[[3]
 [3]]
 '''

Python numpy庫(kù)其他函數(shù)用法

Numpy 的tile函數(shù)用法

  tile函數(shù)位于Python模塊numpy.lib.shape_base中,他的功能是重復(fù)某個(gè)數(shù)組,比如 tile(A,reps),功能是將數(shù)組A重復(fù)reps次,構(gòu)成一個(gè)新的數(shù)組。

1,函數(shù)的定義與說(shuō)明

  函數(shù)格式為   tile(A,reps)

  A和reps 都是array_like

  A的類(lèi)型眾多,幾乎所有類(lèi)型都可以:array  list  tuple  dict  matrix 以及基本數(shù)據(jù)類(lèi)型Int string  float 以及bool類(lèi)型。

  reps 的類(lèi)型也很多,可以是tuple  list  dict  array int  bool  但不可以是float   string  matrix類(lèi)型。

2,示例

>>> a = np.array([0, 1, 2])
 >>> np.tile(a, 2)
 array([0, 1, 2, 0, 1, 2])
 >>> np.tile(a, (2, 2))
 array([[0, 1, 2, 0, 1, 2],
  [0, 1, 2, 0, 1, 2]])
 >>> np.tile(a, (2, 1, 2))
 array([[[0, 1, 2, 0, 1, 2]],
  [[0, 1, 2, 0, 1, 2]]])
 
 >>> b = np.array([[1, 2], [3, 4]])
 >>> np.tile(b, 2)
 array([[1, 2, 1, 2],
  [3, 4, 3, 4]])
 >>> np.tile(b, (2, 1))
 array([[1, 2],
  [3, 4],
  [1, 2],
  [3, 4]])
 
 >>> c = np.array([1,2,3,4])
 >>> np.tile(c,(4,1))
 array([[1, 2, 3, 4],
  [1, 2, 3, 4],
  [1, 2, 3, 4],
  [1, 2, 3, 4]])
from numpy import *
 
code1 = tile(1,2)
print(code1)
# [1 1]
 
code2 = tile((1,2,3),3)
print(code2)
# [1 2 3 1 2 3 1 2 3]
 
a = [1,3,4]
code3 = tile(a,[2,3])
print(code3)
'''
[[1 3 4 1 3 4 1 3 4]
 [1 3 4 1 3 4 1 3 4]]
 '''

Numpy  范數(shù)的用法

顧名思義,linalg = linear + algebralinalg = linear + algebra , norm則表示范數(shù),首先需要注意的是范數(shù)是對(duì)向量(或者矩陣)的度量,是一個(gè)標(biāo)量(scalar):

np.linalg.norm(求范數(shù)):linalg=linear(線(xiàn)性)+algebra(代數(shù))

首先:help(np.linalg.norm) 查看其文檔:

norm(x, ord=None, axis=None, keepdims=False)

這里我們只對(duì)常用設(shè)置進(jìn)行說(shuō)明,x表示要度量的向量,ord表示范數(shù)的種類(lèi),axis表示向量的計(jì)算方向,keepdims表示設(shè)置是否保持維度不變。

用法:

import numpy as np
 
a=np.array([[complex(1,-1),3],[2,complex(1,1)]]) 
print(a)
 
 
print(np.linalg.norm(a,ord=2) ) #計(jì)算矩陣2的范數(shù)
 
 
print(np.linalg.norm(a,ord=1) ) #計(jì)算矩陣1的范數(shù)
 
 
print(np.linalg.norm(a,ord=np.inf) ) #計(jì)算矩陣無(wú)窮的范數(shù)

示例:

import numpy as np
x = np.array([5,7])
np.linalg.norm(x)
8.602325267042627
np.linalg.norm(x,ord=2)
8.602325267042627
np.linalg.norm(x,ord=1)
12.0
np.linalg.norm(x,ord=np.inf)
7.0

范數(shù)理論告訴我們,一范數(shù) >=  二范數(shù)  >=  無(wú)窮范數(shù)

參考文獻(xiàn):http://www.dbjr.com.cn/article/124939.htm

http://www.dbjr.com.cn/article/156112.htm

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。

相關(guān)文章

  • python總結(jié)之閉包和裝飾器

    python總結(jié)之閉包和裝飾器

    這篇文章主要為大家介紹了python閉包和裝飾器,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2021-12-12
  • 如何理解Python中的變量

    如何理解Python中的變量

    在本篇文章里小編給大家分享的是關(guān)于Python中變量是什么意思的相關(guān)基礎(chǔ)知識(shí)點(diǎn),需要的朋友們可以學(xué)習(xí)下。
    2020-06-06
  • Python命令行參數(shù)argv和argparse該如何使用

    Python命令行參數(shù)argv和argparse該如何使用

    這篇文章主要介紹了Python命令行參數(shù)argv和argparse該如何使用,幫助大家更好的理解和學(xué)習(xí)使用python,感興趣的朋友可以了解下
    2021-02-02
  • 使用Python的matplotlib庫(kù)繪制柱狀圖

    使用Python的matplotlib庫(kù)繪制柱狀圖

    這篇文章主要介紹了使用Python的matplotlib庫(kù)繪制柱狀圖,Matplotlib是Python中最常用的可視化工具之一,可以非常方便地創(chuàng)建海量類(lèi)型地2D圖表和一些基本的3D圖表,可根據(jù)數(shù)據(jù)集自行定義x,y軸,繪制圖形,需要的朋友可以參考下
    2023-07-07
  • Python基本數(shù)據(jù)結(jié)構(gòu)與用法詳解【列表、元組、集合、字典】

    Python基本數(shù)據(jù)結(jié)構(gòu)與用法詳解【列表、元組、集合、字典】

    這篇文章主要介紹了Python基本數(shù)據(jù)結(jié)構(gòu)與用法,結(jié)合實(shí)例形式分析了Python基本數(shù)據(jù)結(jié)構(gòu)中的列表、元組、集合、字典相關(guān)概念、使用方法及推導(dǎo)式、遍歷等相關(guān)使用技巧,需要的朋友可以參考下
    2019-03-03
  • python Pygame的具體使用講解

    python Pygame的具體使用講解

    本篇文章主要介紹了python Pygame的具體使用講解,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-11-11
  • Python使用定時(shí)調(diào)度任務(wù)的方式

    Python使用定時(shí)調(diào)度任務(wù)的方式

    Python 有幾種方法可以定時(shí)調(diào)度一個(gè)任務(wù),這就是我們將在本文中學(xué)習(xí)的內(nèi)容。接下倆下邊將給大家介紹5種Python使用定時(shí)調(diào)度任務(wù)方式,需要的朋友可以參考下面文章內(nèi)容吧
    2021-09-09
  • HTML中使用python屏蔽一些基本功能的方法

    HTML中使用python屏蔽一些基本功能的方法

    這篇文章主要介紹了HTML中使用python屏蔽一些基本功能的方法,需要的朋友可以參考下
    2017-07-07
  • python如何將繪制的圖片保存為矢量圖格式(svg)

    python如何將繪制的圖片保存為矢量圖格式(svg)

    這篇文章主要介紹了python如何將繪制的圖片保存為矢量圖格式(svg)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • Python修改DBF文件指定列

    Python修改DBF文件指定列

    這篇文章主要介紹了Python修改DBF文件指定列的實(shí)現(xiàn),幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2020-12-12

最新評(píng)論