python資料分析之numpy自學

2021-08-06 02:56:55 字數 3422 閱讀 6989

# -*- coding:utf-8 -*-

"""@author: fane

@file: numpytest.py

@time:2017/8/9 21:15

"""import numpy as np

defmain

():#numpy的基本使用

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

print(type(lst))

np_lst=np.array(lst) #

print (type(np_lst)) #

np_lst=np.array(lst,dtype=np.float)

print (np_lst.shape) #(2, 3)

print (np_lst.ndim) #2 維數

print (np_lst.dtype) #float64

print (np_lst.itemsize) #8 64位占用8個位元組

print (np_lst.size) #6 元素個數

#常用固定陣列

print ("常用固定陣列")

print (np.zeros([2,4])) #元素為0的2行4列陣列

print (np.ones([3,5])) #元素為1的3行5列陣列

#隨機數

print("random:")

print (np.random.rand(2,4)) #2行4列的隨機數組(元素0-1之間)

print (np.random.randn(2,4))#2行4列的標準正態分佈的隨機數組

print (np.random.rand()) #列印乙個隨機數

print ("randint:")

print (np.random.randint(1,10,3))#列印3個1到10之間的隨機數

#輸出選定數字中 的乙個隨機數

print (np.random.choice([10,20,30,2,6]))

#輸出呈beta分布的1-10之間的100個數

print (np.random.beta(1,10,100))

#numpy的陣列操作

#[ 1 2 3 4 5 6 7 8 9 10] 輸出1到10的一維陣列

print (np.arange(1,11))

#[[ 1 2 3 4 5] 以下兩句都是把1-10分成2行5列的二維陣列

# [ 6 7 8 9 10]] -1就是自動分為2行,列數自動填充

print (np.arange(1,11).reshape([2,5]))

print (np.arange(1, 11).reshape([2, -1]))

list=np.arange(1,11).reshape([2,-1])

print ("exp:")

print(np.exp(list)) #自然指數

print(np.exp2(list)) #自然指數的平方

print(np.sqrt(list)) #開方

print(np.sin(list)) #三角函式

print(np.log(list)) #取對數

list2=np.array([[[1,2,3,4],[4,5,6,7]],

[[7,8,9,10],[10,11,12,13]],

[[14,15,16,17],[18,19,20,21]]])

#list2為3個2維陣列的集合陣列

#axis表示計算的深入維度,axis的值越大越深入細化

print (list2.sum(axis=0))

#輸出結果為[[1+7+14,2+8+15,3+9+16,...[,,]]以此類推的兩行四列的陣列

print (list2.sum(axis=1)) #輸出結果為[[1+4,2+5,3+6,4+7],[7+10]...[,,]] 以此類推的三行四列的陣列

print (list2.sum(axis=2))

#輸出結果為[[1+2+3+4,4+5+6+7],[7+8+9+10,10+11+12+13],[,]] 以此類推的三行兩列的陣列

print ("max and min")

print (list2.max(axis=2))

print (list2.min(axis=0))

ls1 = np.array([4,20,30,40])

ls2 = np.array([10,3,2,1])

print (ls1+ls2) #可以對陣列做加減乘除,平方等等

print (ls1-ls2)

print (ls1**2) #平方

#陣列點乘

print(np.dot(ls1.reshape(2,2),ls2.reshape(2,2)))

#先轉化為2x2的兩個陣列,然後dot點乘

print ("陣列的拆分合併:")

print (np.concatenate((ls1,ls2),axis=0))

#合併為一維陣列

print (np.vstack((ls1,ls2))) #合併為二維陣列

print (np.hstack((ls1,ls2))) #合併為一維陣列

print (np.split(ls1,2)) #把ls1分成等長的兩個陣列

print (np.copy(ls1)) #陣列拷貝

#陣列的矩陣與線性方程

from numpy.linalg import * #引入包

print (np.eye(3)) #三階單位矩陣

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

print (inv(lst)) #逆矩陣

print (lst.transpose()) #轉置矩陣

print (det(lst)) #行列式

print (eig(lst)) #特徵值與特徵向量

y= np.array([[5.],[7.]])

print (solve(lst,y))

#求解lst和y組成的方程組 x+2y=5 3x+4y=7 得出結果x=-3,y=4

#numpy 的其他應用

print (np.fft.fft(np.array([1,1,1,1,1,1,1,1,])))

#fft訊號處理

print(np.corrcoef([1,0,1],[0,2,1])) #吉爾遜相關係數

#生成一元多次函式2x+x+3

if __name__=="__main__":

main()

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

ndarray 多維陣列物件 ndarray是乙個通用的同構資料多維容器,每個陣列均有乙個shape 表示維度大小 和dtype 說明陣列資料型別的物件 eg data.shape 2,3 data.dtype dtype float64 1 建立ndarray data1建立arr1的ndarra...

Python之資料分析(寶可夢資料分析)

在此感謝阿里雲天池平台提供的學習平台,並提供相應的教程供小白們學習資料分析。seaborn庫 seaborn 是基於 python 且非常受歡迎的圖形視覺化庫,在 matplotlib 的基礎上,進行了更高階的封裝,使得作圖更加方便快捷。即便是沒有什麼基礎的人,也能通過極簡的 做出具有分析價值而又十...

python資料分析之Numpy

numpy系統是python的一種開源的數值計算擴充套件 ndarray 多維陣列 所有元素必須是相同型別 ndim屬性,維度個數 shape屬性,各維度大小 dtype屬性,資料型別 coding utf 8 import numpy as np 生成指定維度的隨機多維資料 data np.ran...