利用python進行資料分析 02 numpy基礎

2022-09-13 17:15:09 字數 4060 閱讀 6152

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、布林型索引

>>> import

numpy 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 其中...