首頁 > 軟體

Python中的Numpy 面向陣列程式設計常見操作

2022-07-11 18:02:51

陣列程式設計

使用Numpy陣列可以使你利用簡單的陣列表示式完成多項資料操作任務,而不需要編寫大量的迴圈,這個極大的幫助了我們高效的解決問題。我們都知道向量化的陣列操作比純Python的等價實現在速度這一方面快很多,至於多少(一到兩個數量級)甚至更多,生活需要慢節奏,但是計算就不可以了,掌握高效的計算模型,可以讓資料分析如虎添翼!

簡單例子

我們生成從-3.14--3.14,按照0.01的間隔生成,最後計算表示式X^2+Y^2的值

邏輯條件作為陣列操作

numpy.where函數是三元表示式 x if condition else y 的向量化版本,假設我們有一個布林值陣列和兩個數值陣列

首先我們要明確的是我們自己去寫這個邏輯來進行判斷的話就比較的失敗,因為遇到比較大的陣列,速度會比較的慢,因為所有的程式碼工作都是直譯器Python程式碼完成的,其次如果是多維的那就無法湊效了,但是我們使用np.where就可以簡單的完成。

在np.where的第二個和第三個引數並需要陣列,它們可以是標量,where在資料分析中的一個典型用法就是根據一個陣列來生成一個新的陣列。假設你有一個隨機生成的矩陣資料,並且你想要其中的正值都有替換為2,所有的負數都替換為-2,使用這個函數輕鬆解決。

數學和統計方法

許多關於計算整個陣列統計值或關於軸向資料的資料函數,可以作為陣列型別的方法被呼叫。你可以使用聚合函數(通常也叫縮減函數),比如sum,mean,STD(標準差)既可以直接呼叫也可以使用頂層的numpy函數

 對於統計方法我們的案例其實差不多,至於怎樣去了解那就需要自己去琢磨了,下面有一個基礎陣列的統計方法

基礎陣列的統計方法:

sum

計算總數

 

mean

數學平均,0長度的陣列平均值為NaN

std,var

標準差與方差

min,max

最小值和最大值

argmin,argmax

最小值和最大值的位置

cumsum

從0開始元素累計和(等差數列求和)

cumprod

從1開始元素累計積(階乘)

一行程式碼計算1+2+....10數之和

布林陣列的方法

sum通常可以計算布林值陣列中true的個數,對於布林陣列,有兩個非常常用的方法any和all。any用於檢查陣列中是否至少有一個true,如果有一個以上那麼它就會返回true,any檢查是否每一個值都是true,如果有一個不是true那就返回false。

排序

和Python類建列表相似,numpy陣列可以使用sort方法按照位置排序

唯一值和其他的邏輯集合

介紹:

numpy包含一些針對一維ndarray的基礎集合操作。常用的一個方法是np.unique返回的是包含陣列唯一的排好序的集合,首先集合肯定是唯一的,那麼我們在進行排序,解決它的無序性

應用場景假設有一個陣列裡面有很多值,而且有大量的重複的值我們需要對其進行排序,就可以使用這個方法了,下面是一些陣列集合的操作

陣列集合操作:

unique(x) 計算X的唯一值,並排序 intersect1d(x,y) 計算X和Y的交集,並排序 union1d(x,y) 計算X和Y的並集,並排序 in1d(x,y) 計算X中的元素是否包含在Y中,返回一個布林值陣列 setdiff1d(x,y) 差集,在X中但不在Y中的元素 setxor1d(x,y) 互斥或集,在X或Y中,但不屬於X,Y交集的元素

到此這篇關於Python中的Numpy 面向陣列程式設計常見操作的文章就介紹到這了,更多相關Python Numpy 內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com