ndarray:多維陣列物件
ndarray是乙個通用的同構資料多維容器,每個陣列均有乙個shape(表示維度大小)和dtype(說明陣列資料型別的物件):
eg:>>>data.shape
(2,3)
>>>data.dtype
dtype('float64')
1、建立ndarray
data1建立arr1的ndarray陣列
data1 = [1.2,23,3,23,4,6]arr1 = np.array(data1)
zeros(10,10) 和 ones(10,10) 可以分別建立制定長度、維度的陣列,empty可以建立空的陣列
numpy關注是數值計算,因此,若沒有一般制定,資料型別基本都是float64.
np.arange(15) #返回乙個ndarray而不是列表
ndarray的資料型別dtype是乙個特殊的物件,它含有ndarray將一塊記憶體解釋為特定資料型別所需的資訊:
arr1 = np.array([1,2,3],dtype=np.float64)
ndarray可通過astype的方法來顯式轉換其dtype:
float_arr = arr.astype(np.float64)
大小相等的陣列之間可以將運算運算到元素級。不同大小的陣列之間運算叫做廣播。
2.基本的索引和切片
啊啊啊啊啊啊,坑爹的瀏覽器,我的筆記全丟了,以後再補吧!
3、布林型索引
>>> importnumpy as np
>>> names = np.array(['
bob','
joe','
will
','bob
','will
','joe
','joe'])
>>> data = np.random.randn(7,4)
>>> names == '
bob'
#產生布林型陣列
array([ true, false, false, true, false, false, false], dtype=bool)
>>> data[names == 'bob']
array([[ 0.91085438, -0.83674359, 1.2117743 , -0.40052236],
[ 0.2068526 , -0.41068779, 0.83953301, -0.93918484]])
同時可聯合切片也可以:
>>> data[names == 'bob',:2]
array([[ 0.91085438, -0.83674359],
[ 0.2068526 , -0.41068779]])
>>> data[data<0] = 0 #
將小於0的值進行賦值
>>>data
array([[ 0.91085438, 0. , 1.2117743, 0. ],
[ 0. , 1.08886269, 1.82398061, 2.28503012],
[ 0. , 1.33202507, 0. , 0. ],
[ 0.2068526 , 0. , 0.83953301, 0. ],
[ 0. , 0.13073222, 0.33671297, 0. ],
[ 0. , 0.62412247, 0. , 0. ],
[ 0.68182239, 0. , 0. , 0. ]])
4、花式索引
指利用整數陣列進行索引,假設現有乙個8*4陣列:
arr = np.arange(32).reshape((8,4))>>>arr
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11],
[12, 13, 14, 15],
[16, 17, 18, 19],
[20, 21, 22, 23],
[24, 25, 26, 27],
[28, 29, 30, 31]])
>>> arr[[1,5,7,2],[0,3,1,2]]
array([ 4, 23, 29, 10])
得到陣列的矩形切片
>>> arr[[1,5,7,2]][:,[0,3,1,2]]array([[ 4, 7, 5, 6],
[20, 23, 21, 22],
[28, 31, 29, 30],
[ 8, 11, 9, 10]])
得到上面的結果也可使用此**
>>> arr[np.ix_([1,5,7,2],[0,3,1,2])]array([[ 4, 7, 5, 6],
[20, 23, 21, 22],
[28, 31, 29, 30],
[ 8, 11, 9, 10]])
5、陣列轉置和軸對換
t屬性:
arr = np.arange(15).reshape((3,5))>>>arr
array([[ 0, 1, 2, 3, 4],
[ 5, 6, 7, 8, 9],
[10, 11, 12, 13, 14]])
>>>arr.t
array([[ 0, 5, 10],
[ 1, 6, 11],
[ 2, 7, 12],
[ 3, 8, 13],
[ 4, 9, 14]])
利用np.dot計算矩陣內積:
>>> arr = np.random.randn(6,3)>>>np.dot(arr.t,arr)
array([[ 3.67517253, -0.57586473, -3.36499059],
[-0.57586473, 9.52179993, -0.74028303],
[-3.36499059, -0.74028303, 3.42469162]])
高維陣列需要得到乙個由軸編號組成的元祖才能進行轉置:
arr = np.arange(16).reshape((2,2,4))>>>arr
array([[[ 0, 1, 2, 3],
[ 4, 5, 6, 7]],
[[ 8, 9, 10, 11],
[12, 13, 14, 15]]])
>>> arr.transpose((1,0,2))
array([[[ 0, 1, 2, 3],
[ 8, 9, 10, 11]],
[[ 4, 5, 6, 7],
[12, 13, 14, 15]]])
swapaxes方法:
>>> arr.swapaxes(1,2)array([[[ 0, 4],
[ 1, 5],
[ 2, 6],
[ 3, 7]],
[[ 8, 12],
[ 9, 13],
[10, 14],
[11, 15]]])
swapaxes也是返回源資料的檢視
利用python進行資料分析
目錄 10 minutes to pandas 翻譯 pandas中loc iloc ix的區別 pandas dropna函式 pandas中dataframe的stack unstack 和pivot 方法的對比 pandas中關於set index和reset index的用法 python匿...
利用python進行資料分析
利用python進行資料分析,需要了解一些基本的方法,比如掌握回歸分析的方法,通過線性回歸和邏輯回歸,其實你就可以對大多數的資料進行回歸分析,並得出相對精確地結論。這部分需要掌握的知識點如下 回歸分析 線性回歸 邏輯回歸 基本的分類演算法 決策樹 隨機森林 樸素貝葉斯 基本的聚類演算法 k mean...
《利用Python進行資料分析》筆記
之前的筆記一直記在我的印象筆記上,今天突然想到 不如直接記在部落格上,印象筆記只記錄生活上的事,這樣也分工明確一些。同時也能和大家分享,也許可以幫助到別人。由於這個學習筆記系列主要還是用於個人學習總結用,所以會比較凌亂,望大家理解!2017 9 23 p151 pd.dropna thresh 其中...