Python科學計算庫NumPy基礎操作

birdlove1987發表於2017-02-17

NumPy是什麼?能吃嗎?好吃嗎?

。。。吃貨總是把問題想的這麼簡單。。。

來看看NumPy在官網上是怎麼定義自己的吧。。

NumPy is the fundamental package for scientific computing with Python. It contains among other things:

    1.a powerful N-dimensional array object
    2.sophisticated (broadcasting) functions
    3.tools for integrating C/C++ and Fortran code
    4.useful linear algebra, Fourier transform, and random number capabilities


Besides its obvious scientific uses, NumPy can also be used as an efficient multi-dimensional container of generic data. Arbitrary data-types can be defined. This allows NumPy to seamlessly and speedily integrate with a wide variety of databases.

看到了把,翻譯成中文就是在資料處理方面屌得很。。


下面來看看具體的基本操作吧:

1.匯入NumpPy這個庫(安裝的話,在之前的blog中已經介紹過啦),並將其簡寫方便使用:


import numpy as np


2.Python自定義的陣列並不是嚴格意義上的矩陣,我們可以使用np將其轉換成np自己的矩陣型別


array00 = np.array([[1,2,3],[4,5,6]])
print(array00)




3.檢視矩陣的維數,矩陣的形式,矩陣中元素的個數


print 'number of dim:',array00.ndim
print 'shape:',array00.shape
print 'size',array00.size




4.設定輸出型別


array01 = np.array([1,2,3],dtype=np.int)
print(array01.dtype)



5.初始化N*M的元素為0的矩陣


array01 = np.array([1,2,3],dtype=np.int)
print(array01.dtype)




6.初始化N*M的元素為1的矩陣


array03 = np.ones((4,5))
print array03



7.初始化N*M的元素為空的矩陣


array04 = np.empty((4,5))
print array04



8.生成一個1到10步長為2的矩陣


array05 = np.arange(1,10,2)
print array05



9.生成一個具有12個元素,shape為N*M的矩陣


array06 = np.arange(12).reshape((3,4))
print array06



10.生成一個1到20 被cut為12段的一個線性矩陣


array07 = np.linspace(1,20,12)
print array07
print
array07 = np.linspace(1,20,12).reshape((3,4))
print array07




11.關於矩陣的一些處理


#初始化兩個1*4矩陣
array08 = np.array([4,5,6,7])
array09 = np.arange(4)

#矩陣減法
print array08,array09
array10 = array08 - array09
print array10

#矩陣加法
print array08,array09
array10 = array08 + array09
print array10

#矩陣元素平方
print array08
array10 = array08 ** 2
print array10

#矩陣求sin
print array08
array10 = np.sin(array08)
print array10

#矩陣元素是否大於5
print array08
array10 = array08 > 5
print array10

#矩陣元素是否等於5
print array08
array10 = array08 == 5
print array10



12.矩陣中元素相乘和矩陣乘法


#初始化兩個2*2矩陣
array11 = np.array([[1,1],[0,1]])
array12 = np.arange(4).reshape((2,2))
print array11
print
print array12
print
#矩陣中每個元素相乘
array13 = array11 * array12
#矩陣乘法
array14 = np.dot(array11,array12)
array14 = array11.dot(array12)

print array13
print
print array14




13.隨機生成矩陣


array15 = np.random.random((4,4))
print array15
print
array15_1 = np.random.randint(1,100,10)
print array15_1



14.關於矩陣的一個些操作


#隨機生成矩陣
array15 = np.random.random((4,4))
print array15

array15_1 = np.random.randint(1,100,10)
print array15_1

#方差
print np.var(array15_1)
print
#矩陣求和
print np.sum(array15)
#求出矩陣中最小元素
print np.min(array15)
#求出矩陣中最大元素
print np.max(array15)
#矩陣行求和
print np.sum(array15,axis=0)
#求出每行最小元素
print np.min(array15,axis=0)
#求出每行最大元素
print np.max(array15,axis=0)
print

#列求和
print np.sum(array15,axis=1)
#求出每列最小元素
print np.min(array15,axis=1)
#求出每列最大元素
print np.max(array15,axis=1)


15.關於矩陣索引的一些操作和其他操作


array16 = np.arange(1,13).reshape((3,4))
print array16

#求矩陣最小值索引
print np.argmin(array16)
#求矩陣最大值索引
print np.argmax(array16)
#求矩陣平均值
print np.mean(array16)
print np.average(array16)
#求矩陣行平均值
print np.mean(array16,axis=0)
#求矩陣列平均值
print np.mean(array16,axis=1)

#求矩陣中位數
print np.median(array16)
#矩陣元素累加
print np.cumsum(array16)
#矩陣相鄰元素累差
print np.diff(array16)



16.元素的非零判別


array17 = np.array([[1,2,3],[3,0,4],[0,2,2]])

print np.nonzero(array17)



17.矩陣排序


array18 = np.array([[4,2,3],[3,0,4],[0,5,2]])
#矩陣行排序
print np.sort(array18)




18.矩陣轉置以及矩陣內元素的範圍控制


array19 = np.arange(20).reshape(4,5)
print array19
print

#矩陣轉置
print array19.T
print np.transpose(array19)
print
#矩陣中小於4用4替代,大於8用8替代
print np.clip(array19,4,8)



19.對矩陣的一些控制輸出


array21 = np.arange(3,15).reshape(3,4)
print array21
print
print (array21[2])
print
print array21[1][1]

print array21[1,1]
print array21[1,1:]
print

#列印每一行
for row in array21:
print row

print

#列印每一列
for column in array21.T:
print column
print

#摺疊成一個一維陣列
print (array21.flatten())
print

#列印陣列中的每一個元素
for item in array21.flat:
print item




20.矩陣的分割


array22 = np.arange(16).reshape(4,4)
print array22
print


#每兩行分割
print np.split(array22,2,axis=0)
print


#每兩列分割
print np.split(array22,2,axis=1)
print

#不等分割
print np.array_split(array22,3,axis=1)
print

#橫向分割
print np.vsplit(array22,2)
print

#縱向分割
print np.hsplit(array22,2)




21.矩陣拷貝


array23 = np.arange(4)
array24 = array23

print array23
print array24

#淺拷貝
print array23 is array24
array23[2] = 14
print
print array23
print array24
print


#深拷貝
array25 = array23.copy()

print array23
print array25

print array23 is array25
array23[2] = 99
print
print array23
print array25



22.矩陣合併


array26 = np.array([1,1,1])
array27 = np.array([2,2,2])

#橫向合併
print np.vstack((array26,array27))
print

#縱向合併
print np.hstack((array26,array27))

列表變矩陣
print array26[np.newaxis,:]
print array26[np.newaxis,:].shape
print
print array26[:,np.newaxis]
print array26[:,np.newaxis].shape

array28 = array26[:,np.newaxis]
array29 = array27[:,np.newaxis]
print
print np.vstack((array28,array29))
print
print np.hstack((array28,array29))

#多矩陣合併
print
print np.concatenate((array28,array29,array29,array28),axis=0)
print
print np.concatenate((array28,array29,array29,array28),axis=1)


好啦就到這裡吧,感覺是不是很像matlab,NumPy對矩陣的處理確實很強大!









相關文章