Python開發:NumPy學習(一)ndarray數組


一、數據維度

  一個數據表達一個含義,一組數據表達一個或多個含義。

  數據維度概念:一組數據的組織形式,其中有一維數據、二維數據、多維數據、高維數據。

  1、  一維數據

  一維數據由對等關系的有序或無序數據構成,采用線性方式組織。

  對應:列表、集合

#列表有序
[1,2,3,4,5]
#集合無序
{1,2,3,4,5}

  2、二維數據

  二維數據由多個一維數據構成,是一維數據的組合形式。

  對應:列表

[[1,2,3],[4,5,6]]

  3、多維數據

  多維數據由一維或二維數據在新維度上擴展形成。

  對應:列表

[[[1],[2],[3]],[[4],[5],[6]],[[7],[8],[9]]]

  4、高維數據

  高維數據僅使用最基本二元關系展示數據間的復雜結構。

  對應:字典或數據表示格式

#字典一一對應為二元關系
dict={
          "x1":"1",  
          "y1":"2",  
     }

  數據表示格式:JSON、XML、YAML等格式

二、NumPy

  1、簡介

  NumPy是一個開源的科學計算基礎庫,是SciPy、Pandas等數據處理或科學計算庫的基礎。

  2、主要功能:

  (1)、提供了一個強大的N維數組對象ndarray

    優點:

    1、數組對象可以去掉元素間運算所需的循環,使一維向量更像單個數據。

    2、設置專門的數組對象,經過優化可以提升這類應用的運算速度。

    3、數組對象采用相同的數據類型,有助於節省運算和存儲空間。

    實例:

import numpy as np
a=np.array([1,2,3,4,5])
b=np.array([6,7,8,9,10])
c=[]
c=a**2+b**2
print(c)

    

  (2)、提供了一組廣播功能相關的函數,用來在數據間進行計算;

  (3)、整合了C/C++/Fortran代碼,並提供整合工具;

  (4)、提供了線性代數、傅里葉變換、隨機數生成等功能用於科學計算。

三、ndarray:

  多維數組,由實際數據和描述這些數據的元數據(數據維度、數據類型)兩部分構成。

  一般要求所有元素類型相同,數組下標從0開始。

  np.array()可以生成一個ndarray數組,輸出成[]形式,元素由空格分割。

  兩個屬性:

  軸(axis):保存數據維度;秩(rank):軸的數量  

  ndarray對象的屬性:

  1、ndim:秩,軸數量或維度數量

import numpy as np
a=np.array([[1,2,3,4,5],[6,7,8,9,10]])
print(a.ndim)

  

  2、shape:ndarray對象尺度,即n行m列

import numpy as np
a=np.array([[1,2,3,4,5],[6,7,8,9,10]])
print(a.shape)

  

  3、size:ndarray對象元素個數,為shape中n*m

import numpy as np
a=np.array([[1,2,3,4,5],[6,7,8,9,10]])
print(a.size)

  

  4、dtype:ndarray對象的元素的類型

import numpy as np
a=np.array([[1,2,3,4,5],[6,7,8,9,10]])
print(a.dtype)

  

  5、itemsize:ndarray對象中每個元素大小

import numpy as np
a=np.array([[1,2,3,4,5],[6,7,8,9,10]])
print(a.itemsize)

  

四、ndarray的相關操作

1、創建:

  (1)、從Python中的列表、元組等

import numpy as np
#不聲明數據類型,創建時會自動讀取類型
nd=np.array(list/tuple)
import numpy as np
#聲明數據類型
nd=np.array(list/tuple,dtype=np.int32)

  (2)、使用NumPy中函數

函數 說明
arange(n) 返回ndarray類型,元素從0到n-1
ones(shape) 根據shape生成一個全1數組
zeros(shape) 根據shape生成全0數組
full(shape,value) 根據shape生成一個數組,每元素值全為value
eye(n) 一個正方形的n*n單位矩陣,對角線為1,其余為0
ones_like(a) 根據數組a的形狀生成一個全1數組
zeros_like(a) 根據數組a的形狀生成一個全0數組
full_like(a,value) 根據數組a的形狀生成一個數組,每元素值全為value
linspace() 根據起止數據等間距地填充數據,形成數組
concatenate() 根據兩個或多個數組合並成一個新數組
 
  arange函數默認是整數類型,其他函數默認為float類型, np.ones((1,2),dtype=np.int32)將ones生成的數組類型為int32。
  舉例:
 
  【2,20】linspace前閉合后閉合等分:
import numpy as np
nd=np.linspace(2,20,10)
print(nd)
  

  

  添加endpoint=Flase,【2,20)linspace前閉合后開放等分:

import numpy as np
nd=np.linspace(2,20,10,endpoint=False)
print(nd)

  

 

  concatenate合並:

import numpy as np
nd=np.linspace(2,20,10)
nd2=np.linspace(2,10,3)
nd3=np.concatenate((nd,nd2))
print(nd3)

  

  (3)、從字節流中

  (4)、從文件中讀取特定格式

2、變換

  (1)、維度變換

  reshape(不改變原數組)

import numpy as np
nd=np.full((2,4,8),6)
a=nd.reshape((8,8))
print(a)
print()
print(nd)

  

  resize(改變原數組)

import numpy as np
nd=np.full((2,4,8),6)
print(nd)
print()
nd.resize((8,8))
print(nd)

  

  (2)、元素類型變換

  astype(返回一個新數組)

import numpy as np
nd=np.full((2,4,8),6,dtype=int)
print(nd)
nd2=nd.astype(np.float)
print()
print(nd2)

  

  (3)、ndarray數組轉化成列表

  tolist()

import numpy as np
nd=np.full((2,4,2),1)
print(nd)
nd2=nd.tolist()
print()
print(nd2)

  

3、索引

  獲取數組中特定位置元素的過程。

  一維:和python列表的索引方式相同

  多維:nd[x,y,z]

import numpy as np
nd=np.arange(18).reshape((2,3,3))
print(nd)
print("索引的元素為:"+str(nd[1,2,2]))

  

4、切片

  獲取數組元素子集的過程

  一維:和python列表的切片方式相同

  多維:

import numpy as np
nd=np.arange(18).reshape((2,3,3))
print(nd)
print("切出來的:")
print(nd[:,:,::2])

  

5、運算

  數組與標量間的計算則為數組中每個元素與標量的計算。

  示例:

import numpy as np
nd=np.arange(18).reshape((2,3,3))
print(nd)
nd=nd/2
print("運算結果:")
print(nd)

  

  函數如下:

函數  說明 

 abs(n)

fabs(n)

計算數組各元素的絕對值 
 sqrt(n) 計算數組各元素的平方根 
 square(n) 計算數組各元素的平方 
 rint(n) 各元素四舍五入 
 modf(n) 各元素的整數和小數部分分成兩個獨立數組 
 cos(n) 三角函數 
 exp(n) 各元素指數值 
 sign(n) 各元素的符號值,正數顯示+,負數顯示-,0顯示0 
 log(n) 計算各元素對數 

 ceil(n)

floor(n)

計算各元素ceiling值或floor值 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM