數據分析的Numpy

數據分析:是把隱藏在一些看似雜亂無章的數據背後的信息提煉出來,總結出所研究對象的內在規律python

數據分析的三劍客 :  Numpy ,Pandas ,Matplotlib數組

一.Numpydom

  Numpy(Mumerical python)是python語言的一個擴展程序庫,支持大量的維度數組與矩陣運算,此外也針對數組運算提供大量的數學函數庫。函數

1.建立ndarraylua

  使用np.array()建立spa

   一維數據建立code

import numpy as np

np.array([1,2,3,4,5])

  二維數組建立對象

import numpy as np

np.array([[1,2,3],['a','b',1.1]])

注意:blog

  numpy默認ndarray的全部元素的類型是相同的排序

  若是傳進來的列表中包含不一樣的類型,則統一爲同一類型,優先級:str>float>int

  使用matplotlib.pyplot獲取一個numpy數組,數據來源於一張圖片

  操做該numpy數據,該操做會同步到圖片中

import matplotlib.pyplot as plt

img_arr = plt.imread('./bobo.jpg')

plt.imshow(img_arr)
plt.imshow(img_arr - 66)

2.使用np的routines函數建立

  np.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None) 等差數列

np.linspace(1,100,num=50)

  np.arange([start, ]stop, [step, ]dtype=None)

np.arange(1,100,2)

   np.random.randint(low, high=None, size=None, dtype='l')

np.random.seed(10)
arr = np.random.randint(0,100,size=(5,6))

  np.random.random(size=None)     生成0到1的隨機數,左閉右開 np.random.seed(3)

np.random.random(size=(3,3))

二.ndarray的屬性

  參數: ndim-->維度     shape --> 形狀(各類維度的長度)     size --> 總長度     dtype-->元素類型

img_arr.shape

img_arr.ndim

img_arr.size

img_arr.dtype

type(img_arr)

三.ndarray的基本操做

1.索引  

  一維與列表徹底一致 多維時同理

np.random.seed(10)
arr = np.random.randint(0,100,size=(5,6))

arr

  根據索引修改數據

arr[[1,2]]

2.切片

  一維與列表徹底一致 多維時同理

np.random.seed(10)
arr = np.random.randint(0,100,size=(5,6))

arr

  獲取二維數組前兩行

arr[0:2]

  獲取二維數組前兩列

arr[:,0:2]

  獲取二維數組前兩行和前兩列

arr[0:2,0:2]

  將數據反轉,   ::  進行切片

  將數組的行倒序

#將數組的行倒序
arr[::-1]


#列倒序
arr[:,::-1]


#所有倒序
arr[::-1,::-1]

  將圖片進行所有倒置操做

plt.imshow(img_arr)


plt.imshow(img_arr[:,::-1,:])


plt.imshow(img_arr[::-1,::-1,::-1])

3.變形

  使用arr.reshape()函數,注意參數是一個tuple

  基本使用

    將一維數組變造成多維數組

arr_1.reshape((-1,15))

    將多維數組變造成一維數組

arr_1 = arr.reshape((30,))

4.級聯

  np.concatenate()

  一維,二維,多維數組的級聯,實際操做中級聯多二維數組

np.concatenate((arr,arr),axis=1)
arr1 = np.random.randint(0,100,size=(5,5))

np.concatenate((arr,arr1),axis=1)

  合併兩張照片

img_3 = np.concatenate((img_arr,img_arr,img_arr),axis=1)
imgs = np.concatenate((img_3,img_3,img_3),axis=0)
plt.imshow(imgs)

  np.hstack與np.vstack

  級聯須要注意的點:

    級聯的參數是列表:必定要加中括號或小括號

    維度必須相同

形狀相符:在維度保持一致的前提下,若是進行橫向(axis=1)級聯,必須保證進行級聯的數組行數保持一致。若是進行縱向(axis=0)級聯,必須保證進行級聯的數組列數保持一致。

    可經過axis參數改變級聯的方向

切割

plt.imshow(np.split(img_arr,[400],axis=0)[0])

四.ndarray的聚合操做

1.求和np.sum

#求和np.sum
arr.sum(axis=0)

#最大最小值:np.max/ np.min
arr.max()

#平均值:np.mean()
arr.mean()

其餘聚合操做

Function Name    NaN-safe Version    Description
np.sum    np.nansum    Compute sum of elements
np.prod    np.nanprod    Compute product of elements
np.mean    np.nanmean    Compute mean of elements
np.std    np.nanstd    Compute standard deviation
np.var    np.nanvar    Compute variance
np.min    np.nanmin    Find minimum value
np.max    np.nanmax    Find maximum value
np.argmin    np.nanargmin    Find index of minimum value
np.argmax    np.nanargmax    Find index of maximum value
np.median    np.nanmedian    Compute median of elements
np.percentile    np.nanpercentile    Compute rank-based statistics of elements
np.any    N/A    Evaluate whether any elements are true
np.all    N/A    Evaluate whether all elements are true
np.power 冪運算

五.ndarray的排序

1.快速排序

  np.sort()與ndarray.sort()均可以,但有區別:

    np.sort()不改變輸入

    ndarray.sort()本地處理,不佔用空間,但改變輸入

np.sort(arr,axis=0)
相關文章
相關標籤/搜索