Numpy庫的學習(一)

2021-09-17 21:56:09 字數 4108 閱讀 4196

今天來學習一下python庫中,支援高階大量的維度陣列與矩陣運算的神奇的numpy庫

numpy同時也對陣列運算提供大量的數學函式,對於大量計算執行效率極好

是大量機器學習框架的基礎庫

廢話不多說,直接開整

numpy中最核心的結構就是ndarray陣列

numpy中定義的最重要的物件是成為ndarray的n維陣列型別

它描述相同型別的元素集合。可以使用基於零的索引訪問集合中的專案。大部分的陣列操作僅僅是修改元資料部分,而不改變其底層的實際資料。

陣列的維數稱為秩,簡單來說就是如果你需要獲取陣列中乙個特定元素所需的座標數

如a是乙個2×3×4的矩陣,你索引其中的乙個元素必須給定三個座標a[x,y,z],故它的維數就是3。

陣列中所有元素的型別必須是一致的,python支援的資料型別有整型、浮點型以及複數型

但這些型別不足以滿足科學計算的需求,因此numpy中新增了許多其他的資料型別

如bool、inti、int64、float32、complex64等。同時,它也有許多其特有的屬性和方法。

import numpy as np

vector = np.array([5,10,15,20])

matrix = np.array([[5,10,15],[20,25,30],[30,35,40]])

print (vector)

print (matrix)

我們可以就看到,這裡我寫了乙個行向向量,和乙個矩陣向量

可以得到如上圖所示的結果,列印出乙個行向量,和乙個3行3列的矩陣向量

ndarray中有很多個可以呼叫的屬性,我們可以做一些分析等等操作

首先講一下shape屬性

可以看到,執行上面的**我們得到這樣乙個結果

shape就是說,我要看一下這個向量的維度是多少

第乙個向量,vector是乙個行向量,所以說列印出來只有當前的向量中的元素個數4

對於第二行結果來說, 他是乙個3x3的矩陣向量,(3,3)表示我們當前列印的資料

是乙個3行3列的矩陣向量

接下來看看這個例子

可以看到,執行上面的**,我們可以得到乙個dtype型別值

這個值是表示我們的dtype的格式為int32,下面我們來做一些變化

我們可以看到,這裡numpy幫我們自動轉換了資料格式

講所有的整數型別,全部都換成了浮點型

dtype也變成了float64型別,我們在做些變化

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

print(number)

number.dtype

我們把4修改為字串型別

得到的結果,資料全都變成字串型別了,資料型別也變了

也就是說,在numpy的ndarray中,必須傳進來的資料型別,都是同一種結構的

我們現在來講下如何使用numpy來讀取檔案資料

我們這裡有些測試資料,名為1.txt檔案

testtxt = np.genfromtxt('1.txt',delimiter=".", dtype=str ,skip_header=1)

print(testtxt)

這段**的意思是,是用numpy中的genfromtxt方法讀取檔案

引數為,1.txt檔名稱,delimiter 以什麼進行分割這裡用 . 點號進行分割

dtype =str 指定當前的資料型別為字串

skip_header=1 ,指定去掉第一行資料

得到如下結果

得到了檔案中的內容,轉換成了矩陣,讀出來的資料都是一種矩陣資料格式

當然這個檔案讀取方式不會經常用到,後面講另外乙個更好用的,pands庫中的

這裡就不多講numpy中的檔案讀取

如果我想取出上面矩陣中的某個值,怎麼操作呢?

比如我們想取出第三行的第乙個資料

第四行的第二個資料

out = testtxt[2,0]

out1 = testtxt[3,1]

print(out)

print(out1)

執行上訴**

可以看到,在numpy中,index下標是從0開始的,而不是1

所以一定要切記

我們在定義乙個向量

vector = np.array([5,10,15,20,25])

print(vector[0:3])

我想列印向量中的前三個值

可以看到,這裡的操作和python中的切片操作一樣

選取0到3,包括0但是不包括3

那麼對於矩陣來說也是一樣的

我想列印當前矩陣所有樣本的第二列

matrix[:,1]
那麼這裡用逗號隔開,第個表示行,第二個表示列,表示取所有行的第二列

用:進行站位

我想取所有行的前兩列怎麼取呢?

matrix = np.array([

[1,2,3],

[4,5,6],

[7,8,9],

])print(matrix[:,0:2])

這裡可以看到,取全部行,的0號,和1號列,2號不包含

得到結果,也很簡單

那麼我如何取某幾行,某幾列呢?方法也是一樣的

matrix = np.array([

[1,2,3],

[4,5,6],

[7,8,9],

])print(matrix[1:3,0:2])

取第2,3行的,1,2列

那麼可以得到

好的,今天的numpy庫就講到這裡。下次我們繼續說。感覺閱讀歡迎點讚**。謝謝各位!

numpy庫的學習

今天開始進行對numpy庫的學習為了以後使用python進行機器學習開闢道路 為了方便在文件開頭可以 import numpy as np 這個函式實際上是 numpy.array object,dtype none,copy true,order none,subok false,ndmin 0 ...

機器學習 numpy庫的學習

import numpy as np import random 處理數值型的資料 使用numpy生成陣列,型別為ndarray t1 np.array 1 2,3 print t1 print type t1 t2 np.array range 10 print t2 full填充元素 np.fu...

numpy學習(一) numpy基礎

此文為學習 理解numpy,numpy簡單入門教程整理的學習筆記 numpy是乙個功能強大的python庫,主要用於對多維陣列執行計算。numpy這個詞 於兩個單詞 numerical和python。a np.array 0,1,2,3,4 a np.array 0,1,2,3,4 1,2,3,4,...