《利用Python進行數據分析》學習筆記 NumPy基礎:數組和矢量運算

前言

Numpy在運算的基礎上,提供了一種簡單易用的C API,因此很容易將數據傳遞給由低級語言編寫的外部庫,外部庫也能用NumPy數組的形式返回給Python,這個功能讓Numpy成爲一個動態的,易用的庫。

ndarry 一種多維數組對象

ndarry是一個同構數據多維容器,所有的元素必須是相同類型的。每一個數組都有一個shape(一個表示各維度大小的元組)和一個dtype(一個用於說明數組數據類型的對象)

創建ndarry

1、使用array方法

import numpy as np
data1=[6,7.5,8,0,1]
arr1 = np.array(data1)
data2 = [[1,2,3,4],[5,6,7,8]]
arr2 = np.array(data2)
arr2.shape

除非顯式說明,np.array會嘗試給數組分配一個合適的數據類型,並將該類型分配到dtype對象中。
除了np.array之外,np.zeros和np.ones可以創建指定長度的numpy數組,empty可以創建一個不包含任意值的數組(注意,不是0),使用上述方法時,直接傳入要創建的大小即可。
arange是range函數的數組版:

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
可以通過ndarry中的astype方法,顯性的修改其dtype。

arr3 = np.array([1,2,3,4],dtype = 'int64')
arr3.dtype
float3 = arr3.astype('float64')
float3.dtype

基本的索引和切片

arr = np.arange(10)
arr[5]
arr[5:8]=21
arr

需要注意的事是,數組切片是原始數組的視圖,這意味着數據不會被複制,視圖上的任何修改都會直接反應到原數組上。
在這裏插入圖片描述

arr2d = np.array([[1,2,3],[4,5,6],[7,8,9]])
arr2d[2]
arr2d[0,0]

在這裏插入圖片描述
在這裏插入圖片描述

數組轉置和軸對換

arr1 = np.arange(15).reshape(3,5)
arr1.T

通用函數:快速的元素級數組函數

通用函數是一種對ndarry中的元素進行運算函數,如 sqrt 和 exp

a1 = np.arange(10)
e1 = np.exp(a1)
s1 = np.sqrt(e1)

這些都是一元unfc,還有一些是基於二維的unfc,例如add和maximum

x = np.random.randn(8)
y = np.random.randn(8)
z = np.maximum(x,y)
z

在這裏插入圖片描述
在這裏插入圖片描述

數學和統計方法

可以通過數組上的一組的數學函數對整個數組或某個軸向的數據進行統計運算,sum、mean、std等,這些函數既可以當數組的實例方法調用,也可以當頂級NumPy函數調用。
在這裏插入圖片描述

將數組以二進制形式保存到磁盤

n1 = np.arange(1,5,0.5)
n2 = np.arange(5,10,0.5)
np.save('n1_array',n1)
l1 = np.load('n1_array.npy')
l1
np.savez('aa.npz',a=n1,b=n2)
aaa = np.load('aa.npz')
c = aaa['a']
c

隨機數生成

sample = np.random.normal(size=(4,4))
sample

np.random模塊可以生成各種各樣的隨機數,以上是利用normal函數生成標準正態分佈分佈。
在這裏插入圖片描述
在這裏插入圖片描述

範例:隨機漫步

先從一個簡單的隨機漫步開始,從0開始,步長1和-1的概率相等,先實現1000步的隨機漫步。

import random
position = 0
walk = [position]
steps = 1000
for i in range(steps):
    step = 1 if random.randint(0,1) else -1
    position += step
    walk.append(position)

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章