Python For Data Analysis -- NumPy

來源:互聯網
上載者:User

標籤:des   style   blog   http   os   io   strong   資料   

NumPy作為python科學計算的基礎,為何python適合進行數學計算,除了簡單易懂,容易學習

Python可以簡單的調用大量的用c和fortran編寫的legacy的庫

 

The NumPy ndarray: A Multidimensional Array Object

ndarray,可以理解為n維數組,用於抽象矩陣和向量

Creating ndarrays

最簡單的就是,從list初始化,

當然還有其他的方式,比如,

匯總,

 

 

Data Types for ndarrays

首先對於ndarray只能存放同一類型資料,

並且由於封裝了c和fortran的庫,大家的類型必須要統一,所以ndarrays支援如下類型,
那麼各種語言中的類型,都會統一對應到這些類型

ndarray支援顯式的類型轉換 (copy)

int轉float:

string轉float:

 

這個比較有用,並且可以看到這裡的類型寫的float,NumPy會自動將python的類型轉成ndarray支援的類型

 

Operations between Arrays and Scalars

對於ndarray裡面的elems的操作,是不需要自己寫for的
預設對於ndarray或shape相同的ndarray之間的操作,都是會遍曆每個element的,稱為vectorization,向量化

 

Basic Indexing and Slicing (View)

取出矩陣中的某些資料,或切分出子矩陣

對於一維向量,和python list操作基本是一致的,最大的區別,是ndarray的slicing不會copy,而是view,即你更改slicing,就相當於更改了未經處理資料

 


可以看到更改arr_slice同樣會影響到arr,這樣做的原因是,由於經常會操作很大的矩陣,copy會低效,所以預設是不copy的
當然你可以顯式的copy,arr[5:8].copy()

二維的,參考,

 

Boolean Indexing

這個比較有特點,
對於普通的index,arr[2],這裡是指定index第二個
如果我要index多個,並且不連續,怎麼辦?

其實你可以用一個boolean indexing來一一指定是否需要取出

比如,arr[[True, False, True,False]]

一般不會手工參數這樣的boolean indexing,會通過一些條件判斷得到

然後你把boolean indexing代入arr就可以取出標為True那維資料


所以必須保證boolean indexing的維數和矩陣中的對應的維數是一樣的
比如,
arr[[True, False, True,False]]
必須保證arr是4行的

其實每一維都是可以加上條件過濾的,比如,行選names==Bobs,列選第3列

除了在維度層級進行選擇,還能對每個elem進行過濾
比如把data中,所有小於0的,都設為0

 

Fancy Indexing

Fancy indexing is a term adopted by NumPy to describe indexing using integer arrays.
和普通的indexing, arr[3], 不同在於,可以指定多個,並且按照指定的順序返回

選取第4,3,0,6行

注意底下兩種的區別,
相當於,取(1, 0), (5, 3), (7, 1), and (2, 2)


行,選取1,5,7,2
列,全選,換順序

 

Transposing Arrays and Swapping Axes

轉置,transposing

arr.T

其實轉置是swapaxes的特殊版本,這個可以指定swap哪兩個維度

arr.swapaxes(0, 1)

 

Universal Functions: Fast Element-wise Array Functions

這個上面在基本ndarray計算的時候已經介紹過,這裡匯總一下
這種vectorized操作分為一元和二元的,

 

Data Processing Using Arrays

Expressing Conditional Logic as Array Operations

vectorized可以用於簡化for迴圈,那麼if-else可以簡化嗎?

numpy.where function is a vectorized version of the ternary expression x if condition else y

np.where(cond, xarr, yarr) 等同於 cond?xarr:yarr

並且,這個還可以嵌套,即如果if…elseif…..elseif……else…

 

Mathematical and Statistical Methods

 

Methods for Boolean Arrays

any和all

 

Unique and Other Set Logic

 

File Input and Output with Arrays

Storing Arrays on Disk in Binary Format (.npy)

壓縮儲存,並指定別名 (.npz)

Saving and Loading Text Files

 

Linear Algebra

 

Random Number Generation

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.