程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

Python數據分析與展示--NumPy數據分析

編輯:Python

NumPy數據分析

學習視頻:Python數據分析與展示_北京理工大學_哔哩哔哩_bilibili  P4-P10

數據的維度

  • 一維數據:由對等關系的有序或無序數據構成,采用線性方式組織。例如列表和數組,這兩者的區別是:列表的數據類型可以不同,數組的數據類型必須相同。
  • 二維數據:由多個一維數據構成,是一維數據的組合形式。例如表格是典型的二維數據。
  • 多維數據:由一維或二維數據在新維度上擴展形成
  • 高維數據:僅利用最基本的二元關系展示數據間的復雜結構。例如json、yaml格式的數據

數據維度的Python表示

#一維數據:列表和集合類型
[1,2,3] #有序
{1,2,3} #無序

#二維數據:列表類型
[[1,2,3],
 [4,5,6]]

#多維數據
[[[1,2,3],
  [4,5,6]],
 [7,8,9],
 [4,4,4]]

#高維數據:字典類型或數據表示格式,例如JSON、XML、YAML
dict={
        'firstName':'Tian',
        'lastName':'Song',
    }

NumPy的多維數組對象:ndarray

NumPy是一個開源的python科學計算基礎庫,包含

  • 一個強大的N維數組對象:ndarray
  • 廣播功能函數
  • 整合C/C++/Fortran代碼的工具
  • 線性代數,傅裡葉變換、隨機數生成等功能

NumPy是SciPy、Pandas等數據處理或科學計算庫的基礎

NumPy的引用:

import numpy as np
#這是一種約定俗成的引用名稱,建議使用上述約定的別名

 python已經有列表類型,為什麼需要一個數組對象?

  • 數組對象可以去除元素運算所需的循環,使一維向量更像單個數據
  • 設置專門的數組對象,經過優化,可以提升這類應用的運算速度
  • 數組對象采用相同的數據類型,有助於節省運算和存儲空間

例:

#計算A^2+B^2,其中A和B是一維數組
import numpy as np
#使用列表的方式
def pySum():
a=[0,1,2,3,4]
b=[5,6,7,8,9]
c=[]
for i in range(len(a)):
c.append(a[i]**2+b[i]**2)
return c
print("pySum-->",pySum())
#使用數組的方式
def npSum():
a=np.array([0,1,2,3,4])
b=np.array([5,6,7,8,9])
c=a**2+b**2
return c
print("npSum-->",npSum())
#運行結果
'''
pySum--> [25, 37, 53, 73, 97]
npSum--> [25 37 53 73 97]
'''
#可見如果采用數組的方式,numy把一維向量當作單個數據對待,這樣更有利於進行科學計算

 ndarray對象的構成:

ndarry實例:

  • 實際的數組
  • 描述這些數據的元數據(數據維度、數據類型等)

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

ndarry實例:

import numpy as np
#ndarray在程序中的別名是:array
#np.array()生成一個ndarray數組
a=np.array([[0,1,2,3,4],
[5,6,7,8,9]])
print(a) #np.array()輸出成[]形式,元素有空格分割
'''
[[0 1 2 3 4]
[5 6 7 8 9]]
'''
#軸(axis):保存數據的維度;秩(rank):軸的數量

ndarray對象的屬性

  • .ndim:秩,即軸的數量或維度的數量
  • .shape:ndarray對象的尺度,對於矩陣的n行m列
  • .size:ndarray對象元素的個數,相當於.shape中的n*m的值
  • .dtype:ndarray對象的元素類型
  • .itemsize:ndarray對象中每個元素的大小,以字節為單位

 實例:

import numpy as np
a=np.array([[1,2,3,4],
[5,6,7,8]])
print("維度:",a.ndim)
print("尺度:",a.shape)
print("元素個數:",a.size)
print("元素的類型:",a.dtype)
print("元素的大小:",a.itemsize)
'''
維度: 2
尺度: (2, 4)
元素個數: 8
元素的類型: int32
元素的大小: 4
'''

ndarray的元素類型

非同質的ndarray對象

非同質的ndarray元素為對象類型,無法有效發揮NumPy優勢,盡量避免使用

import numpy as np
a=np.array([[1,2,3,4],
[5,6,7]])
print("尺度:",a.shape)
print("元素個數:",a.size)
print("元素的類型:",a.dtype)
print("元素的大小:",a.itemsize)
'''
尺度: (2,)
元素個數: 2
元素的類型: object
元素的大小: 8
'''
#此時每個一維向量被當成一個對象(元素)

ndarray數組的創建

從python中的列表、元組等類型創建ndarray數組

x=np.array(list/tuple,dtype=np.float32)
#當np.array()不指定dtype時,NumPy將根據情況關聯一個dtype類型

例子:

使用NumPy中函數創建ndarray數組,如:arrange,ones,zeros

注:使用np.arange()方法創建的數組默認是int32類型,另外幾種方法默認是float類型

例子:

例子:

例子:

ndarray數組的變換

ndarray數組的維度變換

例子:

ndarray數組的類型變換

new_a = a.astype(new_type)

#astype()方法一定會創建新的數組()原始數組的一個拷貝,即使兩個類型一致

例子:

ndarray數組向列表的轉換

ls=a.tolist()

例子:

ndarray數組的操作

ndarray數組的索引和切片

一維數組的索引和切片:與python的列表類似

多維數組的索引:

多維數組的切片:

ndarray數組的運算

數組與標量之間的運算作用於數組的每一個元素

NumPy一元函數

例子:

NumPy二元函數

 

例子:

 轉載於:python數據分析與展示(一) - 元騎鯨 - 博客園


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved