日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

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

發(fā)布時(shí)間:2025/3/21 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 机器学习-数据科学库(第三天) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

14.numpy的數(shù)組的創(chuàng)建

什么是numpy

一個(gè)在Python中做科學(xué)計(jì)算的基礎(chǔ)庫(kù),重在數(shù)值計(jì)算,也是大部分PYTHON科學(xué)計(jì)算庫(kù)的基礎(chǔ)庫(kù),多用于在大型、多維數(shù)組上執(zhí)行數(shù)值運(yùn)算(數(shù)組就是列表、列表嵌套列表等)

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.數(shù)組的計(jì)算和數(shù)組的計(jì)算

數(shù)組的形狀

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]

數(shù)組和數(shù)的計(jì)算

?廣播原則

?

16.numpy讀取本地?cái)?shù)據(jù)

軸(axis)

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

?

numpy讀取數(shù)據(jù)

CSV:Comma-Separated Value,逗號(hào)分隔值文件 顯示:表格狀態(tài) 源文件:換行和逗號(hào)分隔行列的格式化文本,每一行的數(shù)據(jù)表示一條記錄 由于csv便于展示,讀取和寫入,所以很多地方也是用csv的格式存儲(chǔ)和傳輸中小型的數(shù)據(jù),為了方便教學(xué),我們會(huì)經(jīng)常操作csv格式的文件,但是操作數(shù)據(jù)庫(kù)中的數(shù)據(jù)也是很容易的實(shí)現(xiàn)的

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

unpack為轉(zhuǎn)置,默認(rèn)為False

numpy中的轉(zhuǎn)置

?

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列到第三列 #取的是行列的交叉點(diǎn)位置 b = a[1:3,1:3]#取多個(gè)不相鄰的點(diǎn) c = a[[0,1],[0,3]] print(c) #取得點(diǎn)是 (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中數(shù)值的修改

?

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

numpy中的clip(裁剪)?

?

t里邊小于10的換成10,大于18的換成18,nan是浮點(diǎn)類型?

19.numpy中的nan和常用統(tǒng)計(jì)方法

?numpy中的nan的注意點(diǎn)

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

什么時(shí)候numpy中會(huì)出現(xiàn)nan: ? ? ?

當(dāng)我們讀取本地的文件為float的時(shí)候,如果有缺失,就會(huì)出現(xiàn)nan當(dāng)做了一個(gè)不合適的計(jì)算的時(shí)候(比如無(wú)窮大(inf)減去無(wú)窮大)??

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]

那么問(wèn)題來(lái)了,在一組數(shù)據(jù)中單純的把nan替換為0,合適么?會(huì)帶來(lái)什么樣的影響?

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

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()) #標(biāo)準(zhǔn)差 [ 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數(shù)據(jù)的練習(xí)

缺失值填充均值

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] #當(dāng)前的一列nan_num = np.count_nonzero(temp_col!=temp_col)if nan_num !=0: #不為0,說(shuō)明當(dāng)前這一列中有nantem_not_nan_col = temp_col[temp_col==temp_col] #當(dāng)前一列不為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.數(shù)據(jù)的拼接

數(shù)據(jù)的拼接

?????

?數(shù)組的行列交換

?

22.numpy中的隨機(jī)方法

數(shù)據(jù)拼接例子

現(xiàn)在希望把之前案例中兩個(gè)國(guó)家的數(shù)據(jù)方法一起來(lái)研究分析,同時(shí)保留國(guó)家的信息(每條數(shù)據(jù)的國(guó)家來(lái)源),應(yīng)該怎么辦?

import numpy as np us_data = "" uk_data = ""#加載國(guó)家數(shù)據(jù) us_data = np.loadtxt(us_data,delimiter=",",dtype = int) uk_data = np.loadtxt(us_data,delimiter=",",dtype = int)#添加國(guó)家信息 #構(gòu)造全為0的數(shù)據(jù) zeros_data = np.zeros(us_data.shape[0],1).astype(int) ones_date = np.ones(ukss_data.shape[0],1).astype(int)#分別添加一列全為0,1的數(shù)據(jù) 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)
  • 創(chuàng)建一個(gè)全0的數(shù)組: np.zeros((3,4))
  • 創(chuàng)建一個(gè)全1的數(shù)組:np.ones((3,4))
  • 創(chuàng)建一個(gè)對(duì)角線為1的正方形數(shù)組(方陣):np.eye(3)
  • numpy生成隨機(jī)數(shù)

    總結(jié)

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

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。