摘要:在下面的例子中,我們創(chuàng)建了一個(gè)二維數(shù)組并插入了兩列輸出如果沒有使用參數(shù),則會(huì)輸出這就是數(shù)組結(jié)構(gòu)的扁平化。下面的例子中我們從二維數(shù)組中刪除了一行輸出在方法中,首先給出數(shù)組,然后給出要?jiǎng)h除的元素的索引。數(shù)組被傳遞給函數(shù)。
NumPy 是一個(gè)Python 庫,用于 Python 編程中的科學(xué)計(jì)算。在本教程中,你將學(xué)習(xí)如何在 NumPy 數(shù)組上以多種方式添加、刪除、排序和操作元素。
NumPy 提供了一個(gè)多維數(shù)組對(duì)象和其他派生數(shù)組,例如掩碼數(shù)組和掩碼多維數(shù)組。
為什么要用 NumPyNumPy 提供了一個(gè) ndarray 對(duì)象,可以使用它來對(duì)任何維度的數(shù)組進(jìn)行操作。 ndarray 代表 N 維數(shù)組,其中 N 是任意數(shù)字。這意味著 NumPy 數(shù)組可以是任何維度的。
與 Python 的 List 相比,NumPy 具有許多優(yōu)勢。我們可以在 NumPy 陣列上執(zhí)行高性能操作,例如:
對(duì)數(shù)組成員進(jìn)行排序
數(shù)學(xué)和邏輯運(yùn)算
輸入/輸出功能
統(tǒng)計(jì)和線性代數(shù)運(yùn)算
安裝 NumPy要安裝NumPy,你的電腦上要先有 Python 和 Pip。
在終端中運(yùn)行以下命令:
pip install numpy
然后你就可以在腳本中導(dǎo)入 NumPy 了,如下所示:
import numpy添加數(shù)組元素
可以用 NumPy 模塊的 append() 方法向 NumPy 數(shù)組中添加元素。
append() 的語法如下:
numpy.append(array, value, axis)
value 會(huì)被追加到在數(shù)組的末尾,并返回一個(gè)包含所有元素的 ndarray。
參數(shù) axis 是一個(gè)可選的整數(shù),用于定義數(shù)組的顯示方式。如果沒有指定,則數(shù)組結(jié)構(gòu)將展平,稍后會(huì)演示用法。
以下示例,其中首先聲明數(shù)組,然后用 append 方法向數(shù)組添加更多的值:
import numpy a = numpy.array([1, 2, 3]) newArray = numpy.append (a, [10, 11, 12]) print(newArray) # 輸出:[ 1 2 3 10 11 12]添加一列
也可以用NumPy 的 append() 方法插入一列。
在下面的例子中,我們創(chuàng)建了一個(gè)二維數(shù)組并插入了兩列:
import numpy a = numpy.array([[1, 2, 3], [4, 5, 6]]) b = numpy.array([[400], [800]]) newArray = numpy.append(a, b, axis = 1) print(newArray) """ 輸出: [[ 1 2 3 400] [ 4 5 6 800]] """
如果沒有使用 axis 參數(shù),則會(huì)輸出:
[ 1 2 3 4 5 6 400 800]
這就是數(shù)組結(jié)構(gòu)的扁平化。
在 NumPy 中,還可以用 insert() 方法插入元素或列。 兩者之間的區(qū)別在于 insert() 方法可以指定要在哪個(gè)索引處添加元素,但 append() 方法會(huì)在數(shù)組的末尾添加一個(gè)值。
Consider the example below:
考慮以下示例:
import numpy a = numpy.array([1, 2, 3]) newArray = numpy.insert(a, 1, 90) print(newArray) # 輸出:[ 1 90 2 3]
這里 insert() 方法在索引1處添加元素。在Python中數(shù)組索引從0開始。
追加一行也可以用 append() 方法向數(shù)組添加行,就像在數(shù)組中附加元素一樣簡單:
import numpy a = numpy.array([[1, 2, 3], [4, 5, 6]]) newArray = numpy.append(a, [[50, 60, 70]], axis = 0) print(newArray) """ 輸出“ [[ 1 2 3] [ 4 5 6] [50 60 70]] """刪除元素
可以用 NumPy 模塊的 delete() 方法刪除 NumPy 數(shù)組元素:
import numpy a = numpy.array([1, 2, 3]) newArray = numpy.delete(a, 1, axis = 0) print(newArray) # 輸出:[1 3]
在本例子中,我們有一個(gè)一維數(shù)組,用 delete() 方法從數(shù)組中刪除了索引 1 處的元素。
刪除一行同樣,你也可以用 delete() 方法刪除行。
下面的例子中我們從二維數(shù)組中刪除了一行:
import numpy a = numpy.array([[1, 2, 3], [4, 5, 6], [10, 20, 30]]) newArray = numpy.delete(a, 1, axis = 0) print(newArray) """ 輸出: [[ 1 2 3] [10 20 30]] """
在 delete() 方法中,首先給出數(shù)組,然后給出要?jiǎng)h除的元素的索引。在上例中,我們刪除了索引為 1 的元素。
檢查 NumPy 數(shù)組是否為空可以用 size 方法返回?cái)?shù)組中元素的總數(shù)。
在下面的例子中有一個(gè) if 語句,通過 ndarray.size 檢查數(shù)組中是否有元素,其中 ndarray 可以是任何給定的 NumPy 數(shù)組:
import numpy a = numpy.array([1, 2, 3]) if(a.size == 0): print("The given Array is empty") else: print("The array = ", a) # 輸出:The array = [1 2 3]
在上面的代碼中,數(shù)組中有三個(gè)元素,因此它不是空的,判斷條件將返回false。如果數(shù)組中沒有元素,則 if 條件會(huì)變?yōu)?true 并且將打印空消息。如果數(shù)組等于:
a = numpy.array([])
上述代碼將會(huì)輸出:
The given Array is empty查找值的索引
要查找值對(duì)應(yīng)的索引,可以用 NumPy 模塊的 where() 方法,如下例所示:
import numpy a = numpy.array([1, 2, 3, 4, 5]) print("5 is found at index: ", numpy.where(a == 5)) # 輸出:5 is found at index: (array([4]),)
如果你只想得到索引,可以這樣寫:
import numpy a = numpy.array([1, 2, 3, 4, 5]) index = numpy.where(a == 5) print("5 is found at index: ", index[0]) #輸出: 5 is found at index: [4]NumPy 數(shù)組切片
數(shù)組切片是從給定數(shù)組中提取子集的過程。你可以用冒號(hào)( : )運(yùn)算符對(duì)數(shù)組進(jìn)行切片,并指定數(shù)組索引的開始和結(jié)束位置,例如:
array[from:to]
下面的例子中提取從索引 2 到索引 5 的元素:
import numpy a = numpy.array([1, 2, 3, 4, 5, 6, 7, 8]) print("A subset of array a = ", a[2:5]) # 輸出:A subset of array a = [3 4 5]
如果想要提取最后三個(gè)元素,可以通過用負(fù)切片來完成操作,如下所示:
import numpy a = numpy.array([1, 2, 3, 4, 5, 6, 7, 8]) print("A subset of array a = ", a[-3:]) # 輸出:A subset of array a = [6 7 8]將函數(shù)作用于所有數(shù)組元素
在下面的例子中,我們將創(chuàng)建一個(gè) lambda 函數(shù),并傳入一個(gè)數(shù)組,以其應(yīng)用于所有元素:
import numpy addition = lambda x: x + 2 a = numpy.array([1, 2, 3, 4, 5, 6]) print("Array after addition function: ", addition(a)) # 輸出:Array after addition function: [3 4 5 6 7 8]
在此例中,創(chuàng)建了一個(gè) lambda 函數(shù),它使每個(gè)元素都遞增 2。
NumPy 數(shù)組的長度要得到 NumPy 數(shù)組的長度,可以用 size 屬性,如下所示:
import numpy a = numpy.array([1, 2, 3, 4, 5, 6]) print("The size of array = ", a.size) # 輸出:The size of array = 6從 list 創(chuàng)建 NumPy 數(shù)組
假設(shè)你有一個(gè)列表:
l = [1, 2, 3, 4, 5]
現(xiàn)在要根據(jù)這個(gè)列表創(chuàng)建一個(gè)數(shù)組,可以用 NumPy 模塊的 array() 方法:
import numpy l = [1, 2, 3, 4, 5] a = numpy.array(l) print("The NumPy array from Python list = ", a) # 輸出:The NumPy array from Python list = [1 2 3 4 5]
同樣,使用 array() 方法,也可以從元組創(chuàng)建 NumPy 數(shù)組。如下所示:
import numpy t = (1, 2, 3, 4, 5) a = numpy.array(t) print("The NumPy array from Python Tuple = ", a) # 輸出:The NumPy array from Python Tuple = [1 2 3 4 5]將 NumPy 數(shù)組轉(zhuǎn)換為 list
要將數(shù)組轉(zhuǎn)換為list,可以使用 NumPy 模塊的 tolist()方法。
import numpy a = numpy.array([1, 2, 3, 4, 5]) print("Array to list = ", a.tolist()) # 輸出:Array to list = [1, 2, 3, 4, 5]
在這段代碼中,我們簡單地調(diào)用了 tolist() 方法,該方法將數(shù)組轉(zhuǎn)換為列表。然后將新創(chuàng)建的列表打印到輸出屏幕。
把 NumPy 數(shù)組導(dǎo)出為 CSV要將數(shù)組導(dǎo)出為 CSV 文件,可以用 NumPy 模塊的 savetxt() 方法,如下所示:
import numpy a = numpy.array([1, 2, 3, 4, 5]) numpy.savetxt("myArray.csv", a)
此代碼將在 Python 代碼文件所在路徑下生成 CSV 文件。當(dāng)然你也可以指定路徑。
該文件的內(nèi)容如下:
1.000000000000000000e+00 2.000000000000000000e+00 3.000000000000000000e+00 4.000000000000000000e+00 5.000000000000000000e+00
你可以把額外填充的零刪除,如下所示:
numpy.savetxt("myArray.csv", a,fmt="%.2f")對(duì) NumPy 數(shù)組排序
可以用 NumPy 模塊的 sort() 方法對(duì) NumPy 數(shù)組進(jìn)行排序:
sort() 函數(shù)有一個(gè)可選參數(shù) axis(整數(shù)),默認(rèn)為 -1。axis 指定我們要對(duì)數(shù)組進(jìn)行排序的軸。 -1 表示將根據(jù)最后一個(gè)軸對(duì)數(shù)組進(jìn)行排序。
import numpy a = numpy.array([16, 3, 2, 6, 8, 10, 1]) print("Sorted array = ", numpy.sort(a)) # 輸出:Sorted array = [ 1 2 3 6 8 10 16]
在這個(gè)例子中,我們?cè)?print 語句中調(diào)用了 sort() 方法。數(shù)組 a 被傳遞給 sort 函數(shù)。
歸一化數(shù)組歸一化數(shù)組是指將數(shù)組的值置于某個(gè)定義范圍的過程。例如,我們想要在 -1 和 1 之間對(duì)數(shù)組進(jìn)行歸一化,依此類推。
歸一化的公式如下:
x = (x – xmin) / (xmax – xmin)
現(xiàn)在把這個(gè)公式用于我們的數(shù)組。要查找數(shù)組中的最大和最小項(xiàng),可以分別用 NumPy 的 max() 和 min() 方法。
import numpy x= numpy.array([400, 800, 200, 700, 1000, 2000, 300]) xmax = x.max() xmin = x.min() x = (x - xmin)/(xmax - xmin) print("After normalization array x = ", x) """ 輸出: After normalization array x = [0.11111111 0.33333333 0. 0.27777778 0.44444444 1. 0.05555556] """數(shù)組索引
索引指向數(shù)組中的一個(gè)元素。在下面的例子中,分別用到了一維和二維數(shù)組中的索引:
import numpy a = numpy.array([20, 13, 42, 86, 81, 9, 11]) print("Element at index 3 = ", a[3]) # 輸出:Element at index 3 = 86
下面是二維數(shù)組:
import numpy a = numpy.array([[20, 13, 42], [86, 81, 9]]) print("Element at index a[1][2] = ", a[1][2]) # 輸出:Element at index a[1][2] = 9
索引 [1][2] 表示第二行和第三列(索引從 0 開始)。因此在屏幕上輸出 9 。
將 NumPy 數(shù)組附加到另?一個(gè)數(shù)組上可以用 append() 方法將 NumPy 數(shù)組附加到另??一個(gè) NumPy 數(shù)組上。
import numpy a = numpy.array([1, 2, 3, 4, 5]) b = numpy.array([10, 20, 30, 40, 50]) newArray = numpy.append(a, b) print("The new array = ", newArray) # 輸出:The new array = [ 1 2 3 4 5 10 20 30 40 50]
在此例中,創(chuàng)建兩個(gè) NumPy 數(shù)組 a, b 。然后把兩個(gè)數(shù)組傳給 append()。當(dāng)數(shù)組 b 作為第二個(gè)參數(shù)傳遞時(shí),將被添加到數(shù)組 a 的末尾。
總結(jié)正如大家所見,NumPy 數(shù)組用起來非常簡單。在使用很多機(jī)器學(xué)習(xí)庫時(shí),NumPy 數(shù)組非常重要??梢哉fNumPy 是人工智能的大門。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/19999.html
摘要:在下面的例子中,我們創(chuàng)建了一個(gè)二維數(shù)組并插入了兩列輸出如果沒有使用參數(shù),則會(huì)輸出這就是數(shù)組結(jié)構(gòu)的扁平化。下面的例子中我們從二維數(shù)組中刪除了一行輸出在方法中,首先給出數(shù)組,然后給出要?jiǎng)h除的元素的索引。數(shù)組被傳遞給函數(shù)。 NumPy 是一個(gè)Python 庫,用于 Python 編程中的科學(xué)計(jì)算。在本教程中,你將學(xué)習(xí)如何在 NumPy 數(shù)組上以多種方式添加、刪除、排序和操作元素。 NumPy...
摘要:轉(zhuǎn)自程序員的資料庫最流行的模塊庫大全收藏下面的列表是最流行的模塊庫,該資源列表列出了使用頻率最高的模塊庫,是學(xué)習(xí)最好的資源之一,趕緊收藏吧 轉(zhuǎn)自:程序員的資料庫-最流行的Python模塊庫大全【收藏】 下面的列表是最流行的Python模塊庫,該P(yáng)ython資源列表列出了使用頻率最高的Python模塊庫,是學(xué)習(xí)Python最好的資源之一,趕緊收藏吧?。? os (2810) ...
摘要:做一個(gè)搬運(yùn)工,希望自己能努力學(xué)習(xí),也希望大神們的東西能讓更多的人看到不斷更新更新日志新增了網(wǎng)絡(luò)安全分類,整理了排版布局新增了的鏈接,將一些雜七雜八的東西弄到了一篇新文章上了,叫做積累與雜貨鋪一以及相關(guān)教程的規(guī)范與相關(guān)中文學(xué)習(xí)大本營中文文檔簡 做一個(gè)搬運(yùn)工,希望自己能努力學(xué)習(xí),也希望大神們的東西能讓更多的人看到 不斷更新 更新日志:2017.10.13 新增了網(wǎng)絡(luò)安全分類,整理了排版布局...
摘要:做一個(gè)搬運(yùn)工,希望自己能努力學(xué)習(xí),也希望大神們的東西能讓更多的人看到不斷更新更新日志新增了網(wǎng)絡(luò)安全分類,整理了排版布局新增了的鏈接,將一些雜七雜八的東西弄到了一篇新文章上了,叫做積累與雜貨鋪一以及相關(guān)教程的規(guī)范與相關(guān)中文學(xué)習(xí)大本營中文文檔簡 做一個(gè)搬運(yùn)工,希望自己能努力學(xué)習(xí),也希望大神們的東西能讓更多的人看到 不斷更新 更新日志:2017.10.13 新增了網(wǎng)絡(luò)安全分類,整理了排版布局...
摘要:在線挑戰(zhàn),還沒用過,貌似現(xiàn)在對(duì)英文資料心里還有種抵觸,必須克服實(shí)驗(yàn)樓研發(fā)工程師包含了等學(xué)習(xí)課程。書的作者就是開發(fā)了用于數(shù)據(jù)分析的著名開源庫的作者英文資料,對(duì)數(shù)據(jù)分析中要用到的一些庫,等等做了簡要介紹。形式的資料,示例代碼都很全。 showImg(https://segmentfault.com/img/remote/1460000004852849); 一、說明 面對(duì)網(wǎng)絡(luò)上紛繁復(fù)雜的資...
閱讀 2829·2021-10-13 09:48
閱讀 3800·2021-10-13 09:39
閱讀 3601·2021-09-22 16:04
閱讀 1837·2021-09-03 10:48
閱讀 846·2021-08-03 14:04
閱讀 2366·2019-08-29 15:18
閱讀 3410·2019-08-26 12:19
閱讀 2880·2019-08-26 12:08