日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

机器学习-数据科学库(第三天)

發布時間:2025/3/21 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 机器学习-数据科学库(第三天) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

14.numpy的數組的創建

什么是numpy

一個在Python中做科學計算的基礎庫,重在數值計算,也是大部分PYTHON科學計算庫的基礎庫,多用于在大型、多維數組上執行數值運算(數組就是列表、列表嵌套列表等)

import numpy as np t1 = np.array([1,2,3]) print(t1) print(type(t1)) t2 = np.array(range(10)) print(t2) t3 = np.arange(10) print(t3) print(t3.dtype) [1 2 3] <class 'numpy.ndarray'> [0 1 2 3 4 5 6 7 8 9] [0 1 2 3 4 5 6 7 8 9] int64

import numpy as np t1 = np.array(range(10),dtype="float64") print(t1) print(t1.dtype)t2 = t1.astype("int8") print(t2.dtype) [0. 1. 2. 3. 4. 5. 6. 7. 8. 9.] float64 int8 t3 = np.array([random.random() for i in range(10)]) print(t3) print(t3.dtype)t4 = np.round(t3,2) print(t4) [0.15551533 0.00401583 0.15190568 0.8632606 0.26929546 0.647212470.40041603 0.18216162 0.36326966 0.80083215] float64 [0.16 0. 0.15 0.86 0.27 0.65 0.4 0.18 0.36 0.8 ]

15.數組的計算和數組的計算

數組的形狀

import numpy as np t1 = np.arange(12) print(t1) print(t1.shape)t2 = np.array([[1,2,3],[5,4,6]]) print(t2.shape)t3 = np.array([[[1,2,3],[5,4,6]],[[2,2,5],[5,7,3]]]) print(t3.shape)t4 = np.arange(12) print(t4.reshape((3,4)))t5 = np.arange(24).reshape((2,3,4)) print(t5)print(t5.flatten()) [ 0 1 2 3 4 5 6 7 8 9 10 11] (12,) (2, 3) (2, 2, 3) [[ 0 1 2 3][ 4 5 6 7][ 8 9 10 11]] [[[ 0 1 2 3][ 4 5 6 7][ 8 9 10 11]][[12 13 14 15][16 17 18 19][20 21 22 23]]] [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23]

數組和數的計算

?廣播原則

?

16.numpy讀取本地數據

軸(axis)

在numpy中可以理解為方向,使用0,1,2...數字表示,對于一個一維數組,只有一個0軸,對于2維數組(shape(2,2)),有0軸和1軸,對于三維數組(shape(2,2,3)),有0,1,2軸

?

numpy讀取數據

CSV:Comma-Separated Value,逗號分隔值文件 顯示:表格狀態 源文件:換行和逗號分隔行列的格式化文本,每一行的數據表示一條記錄 由于csv便于展示,讀取和寫入,所以很多地方也是用csv的格式存儲和傳輸中小型的數據,為了方便教學,我們會經常操作csv格式的文件,但是操作數據庫中的數據也是很容易的實現的

np.loadtxt(fname,dtype=np.float,delimiter=None,skiprows=0,usecols=None,unpack=False)?

unpack為轉置,默認為False

numpy中的轉置

?

17.numpy中的索引和切片

numpy中的索引和切片

import numpy as np a = np.array([[0,1,2,3],[4,5,6,7],[8,9,10,11]]) print(a[1]) #取第一行,第三行 print(a[[0,2]]) print(a[1:]) #取列 print(a[:,0]) print(a[:,[0,2]])print(a[2,3]) print(type(a[2,3]))#取多行多列,取第2行到第三行,第2列到第三列 #取的是行列的交叉點位置 b = a[1:3,1:3]#取多個不相鄰的點 c = a[[0,1],[0,3]] print(c) #取得點是 (0,0)(1,3) [4 5 6 7] [[ 0 1 2 3][ 8 9 10 11]] [[ 4 5 6 7][ 8 9 10 11]] [0 4 8] [[ 0 2][ 4 6][ 8 10]] 11 <class 'numpy.int64'> [0 7]

18.numpy中更多的索引方式

numpy中數值的修改

?

np.where(t>10,20,0) 把t中大于10的替換成20,其他的替換為0

numpy中的clip(裁剪)?

?

t里邊小于10的換成10,大于18的換成18,nan是浮點類型?

19.numpy中的nan和常用統計方法

?numpy中的nan的注意點

nan(NAN,Nan):not a number表示不是一個數字

什么時候numpy中會出現nan: ? ? ?

當我們讀取本地的文件為float的時候,如果有缺失,就會出現nan當做了一個不合適的計算的時候(比如無窮大(inf)減去無窮大)??

import numpy as np t3 = np.arange(12).reshape((3,4)) print(t3) print(np.sum(t3)) print(np.sum(t3,axis=0)) print(np.sum(t3,axis=1)) [[ 0 1 2 3][ 4 5 6 7][ 8 9 10 11]] 66 [12 15 18 21] [ 6 22 38]

那么問題來了,在一組數據中單純的把nan替換為0,合適么?會帶來什么樣的影響?

比如,全部替換為0后,替換之前的平均值如果大于0,替換之后的均值肯定會變小,所以更一般的方式是把缺失的數值替換為均值(中值)或者是直接刪除有缺失值的一行

import numpy as np t2=np.array([[0,3,3,3,3,3],[0,3,3,3,10,11],[0,13,14,15,16,17],[0,19,20,11,20,20]])print(t2.sum(axis=0)) print(t2.mean(axis=0)) print(t2.max(axis=0)) print(t2.min(axis=0)) print(np.median(t2,axis=0)) print(np.ptp(t2)) #極值,最大值和最小值之差 print(t2.std()) #標準差 [ 0 38 40 32 49 51] [ 0. 9.5 10. 8. 12.25 12.75] [ 0 19 20 15 20 20] [0 3 3 3 3 3] [ 0. 8. 8.5 7. 13. 14. ] 20 7.281540587906747

?

20.numpy中填充nan和youtube數據的練習

缺失值填充均值

import numpy as np t1 = np.arange(12).reshape((3,4)).astype("float") t1[1,2:] = np.nan print(t1) for i in range(t1.shape[1]):temp_col = t1[:,i] #當前的一列nan_num = np.count_nonzero(temp_col!=temp_col)if nan_num !=0: #不為0,說明當前這一列中有nantem_not_nan_col = temp_col[temp_col==temp_col] #當前一列不為nan的arraytemp_col[np.isnan(temp_col)] = tem_not_nan_col.mean() print(t1) [[ 0. 1. 2. 3.][ 4. 5. nan nan][ 8. 9. 10. 11.]] [[ 0. 1. 2. 3.][ 4. 5. 6. 7.][ 8. 9. 10. 11.]]

21.數據的拼接

數據的拼接

?????

?數組的行列交換

?

22.numpy中的隨機方法

數據拼接例子

現在希望把之前案例中兩個國家的數據方法一起來研究分析,同時保留國家的信息(每條數據的國家來源),應該怎么辦?

import numpy as np us_data = "" uk_data = ""#加載國家數據 us_data = np.loadtxt(us_data,delimiter=",",dtype = int) uk_data = np.loadtxt(us_data,delimiter=",",dtype = int)#添加國家信息 #構造全為0的數據 zeros_data = np.zeros(us_data.shape[0],1).astype(int) ones_date = np.ones(ukss_data.shape[0],1).astype(int)#分別添加一列全為0,1的數據 us_data = np.hstack((us_data,zeros_data)) uk_data = np.hstack((uk_data,ones_date))

numpy更多好用的方法

  • 獲取最大值最小值的位置? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 每一列最大值位置:np.argmax(t,axis=0) ? 每一行最大值的位置:np.argmin(t,axis=1)
  • 創建一個全0的數組: np.zeros((3,4))
  • 創建一個全1的數組:np.ones((3,4))
  • 創建一個對角線為1的正方形數組(方陣):np.eye(3)
  • numpy生成隨機數

    總結

    以上是生活随笔為你收集整理的机器学习-数据科学库(第三天)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。