python 2.7
ipython 4.1.2
in[1]: from numpy import *
in[2]: yuanzu = (4,5,6)
in[3]: ll = array(yuanzu)
in[4]: ll
out[4]: array([4, 5, 6])
in[5]: pylist = [0,1,2]
in[6]: jj = array(pylist)
in[7]: jj
out[7]: array([0, 1, 2])
in[95]: pylist1 = [1,2,3]
in[96]: pylist2 = [4,5,6]
in[100]: marray = array([pylist1,pylist2])
in[102]: marray
out[102]:
array([[1, 2, 3],
[4, 5, 6]])
以marray的array來說
in[102]: marray
out[102]:
array([[1, 2, 3],
[4, 5, 6]])
in[104]: marray[0][2]
out[104]: 3
in[105]: marray*2
out[105]:
array([[ 2, 4, 6],
[ 8, 10, 12]])
in[106]: marray*marray
out[106]:
array([[ 1, 4, 9],
[16, 25, 36]])
#由list構建
in[84]: mm = mat(pylist)
in[85]: mm
out[85]: matrix([[0, 1, 2]])
#由tuple構建
in[107]: oo = mat(yuanzu)
in[108]: oo
out[108]: matrix([[4, 5, 6]])
in[109]: pp = mat(marray)
in[110]: pp
out[110]:
matrix([[1, 2, 3],
[4, 5, 6]])
對下面的pp矩陣來操作
in[110]: pp
out[110]:
matrix([[1, 2, 3],
[4, 5, 6]])
in[111]: pp.shape
out[111]: (2l, 3l) #兩行三列的矩陣
in[116]: pp[1,2] #取第二行第三列元素
out[116]: 6
in[115]: pp[1,:] #取第二行,所有列
out[115]: matrix([[4, 5, 6]])
in[112]: pp.t
out[112]:
matrix([[1, 4],
[2, 5],
[3, 6]])
in[113]: pp*(pp.t)
out[113]:
matrix([[14, 32],
[32, 77]])
in[114]: multiply(pp,pp)
out[114]:
matrix([[ 1, 4, 9],
[16, 25, 36]])
in[119]: qq = mat([2,1,3]) #構建乙個新的matrix
in[120]: qq
out[120]: matrix([[2, 1, 3]])
in[121]: qq.sort() #進行遞增排序,改變原來資料
in[122]: qq
out[122]: matrix([[1, 2, 3]])
in[126]: cc = mat([[3,1,4],[2,3,4]]) #重新構建乙個矩陣
in[127]: cc
out[127]:
matrix([[3, 1, 4],
[2, 3, 4]])
in[128]: cc.argsort()
out[128]:
matrix([[1, 0, 2],
[0, 1, 2]], dtype=int64)
#比如說[3,1,4]這一行,元素先從小到大排序為[1,3,4],對應1的元素在原本的矩陣中索引應該是1,對應3的索引是0,4的索引是2,所以得出[1,0,2]
官方建議多使用array
一句話,matrix應該算是array的乙個分支,只是array的二維表示而已,matrix的操作,array都可以完成,值得注意的是,想要完成矩陣相乘,而不是對應相乘,array需要採用dot方法,舉個例子
#對應相乘
in[129]: marray*marray
out[129]:
array([[ 1, 4, 9],
[16, 25, 36]])
#矩陣相乘
in[130]: marray.dot(marray.t)
out[130]:
array([[14, 32],
[32, 77]])
2017.06.13-update
# 一些例子比較區別
>>> import numpy as np
>>> a = [[1,2],[2,3]]
>>> b = [[0,1],[0,1]]
>>> array_1 = np.array(a)
>>> array_2 = np.array(b)
>>> array_1*array_2
array([[0, 2],
[0, 3]])
>>> matrix_1 = np.matrix(a)
>>> matrix_2 = np.matrix(b)
>>> matrix_1*matrix_2
matrix([[0, 3],
[0, 5]])
>>> matrix_3 = np.matrix(array_1) # 可以直接轉換
>>> matrix_3
matrix([[1, 2],
[2, 3]])
>>> array_3 = np.array(matrix_1)
>>> array_3
array([[1, 2],
[2, 3]])
–也就是,沒事多用用array
利用python進行資料分析.wes mckinney著
機器學習實戰.peter harrington著
NumPy快速入門學習筆記
可以說是剛剛入門了python,最近需要做深度學習的任務,但是發現numpy的知識一無所知,所以應該靜下來學一學。寫這些東西,最重要的就是想要自己去用它,在這裡也跟自己提個醒,避免頻繁的陷入一些不必要的學習之中。要明白自己學習的目的,是為了用而學習,而不是為了學習而去學習 就目前階段,許多事物擺在眼...
Numpy快速入門 隨機數random模組指南
numpy numerical python 是高效能科學計算和資料分析的基礎包,內建的random模組用於生成隨機數,下面介紹常用的隨機數函式 1 np.random.seed argument 作用 如果使用相同的argument值,則每次生成的隨即數都相同。如果不設定這個值,則系統根據時間來自...
numpy簡單入門
numpy數以陣列為物件,將各種資料轉化成陣列,因此,我們學習的也就是陣列了,實際上它被稱之為ndarrays。建立乙個陣列 import numpy as np my array np.array 1,2,3,4,5 print my array print my array.shape 建立全部...