numpy使用教程之數組的創建與遍歷

NumPy 是一個 Python 包。 它代表 “Numeric Python”。 它是一個由多維數組對象和用於處理數組的例程集合組成的庫。

·常見的數據類型

  bool_ 一個字節的布爾值

 int_  默認的整數

int8  字節-128-127 ; int16,int32, int64  對應的整數

float_ float64的簡寫, float16  float32  float64

complex_  

·創建n維數組  numpy.array()函數的使用

numpy.array(object, dtype = None, copy = True, order = None, subok = False, ndmin = 0)

           

序號參數及描述
1.object 任何暴露數組接口方法的對象都會返回一個數組或任何(嵌套)序列。
2.dtype 數組的所需數據類型,可選。
3.copy 可選,默認爲true,對象是否被複制。
4.order C(按行)、F(按列)或A(任意,默認)。
5.subok 默認情況下,返回的數組被強制爲基類數組。 如果爲true,則返回子類。
6.ndimin 指定返回數組的最小維數。

數組的屬性

   numpy.shape : 返回一個包含數組元素的元組,也可以調整數組的排列形式

  import numpy as np
  a = np.array([[1,2,3],[4,5,6]])
  print a.shape #(2,3)
  a.shape=(3,2)
print a  ##[[1,2],[3,4],[5,6]]

    numpy.reshape()  功能與屬性shape相似,但一個爲方法,一個爲屬性

a.reshape(3,2)

  numpy.ndim 返回數組的維數 

數組的創建

  np.arange(start,stop,step,dtype='')  返回等間隔數字的函數
a= np.arange(2,10,2,dtype='flaot')
print a  # [2.,4.,6.,8.]
np.linspace(start,stop,num,endpoint,restep,dtype)  
1.start序列的起始值
2.stop序列的終止值,如果endpointtrue,該值包含於序列中
3.num 要生成的等間隔樣例數量,默認爲50
4.endpoint序列中是否包含stop值,默認爲ture
5.retstep如果true,返回樣例,以及連續數字之間的步長
6.dtype輸出ndarray的數據類型
其他函數np.zeros(shapge) np.ones(shapge) np.empty(shape) 相當於matlab中的函數,

切片和索引(用戶遍歷數組中的元素)

      切片(slice對象)通過將start,stop和step參數提供給內置的slice函數來構造一個 Python slice對象

a= np.arange(0,10,1,dtype='float')

s=slice(2,5,1)  # 函數而非對象

print a[s] #[2 3 4]

     上述代碼等價於:

import numpy as np
a = np.arange(10)
b = a[2:7:2]  
print b

獲取單個元素: a[5] 

獲取第2個及之後的元素:a[2:]

獲取第2個至第5個元素:a[2:5]

獲取數組的逆序:a[::-1]

·切片還可以包括省略號(...),來使選擇元組的長度與數組的維度相同。 如果在行位置使用省略號,它將返回包含  行中元素的ndarray

import numpy as np
a = np.array([[1,2,3],[3,4,5],[4,5,6]])  
print  '我們的數組是:'  
print a
print  '\n'  
# 這會返回第二列元素的數組:  
print  '第二列的元素是:'  
print a[...,1]  
print  '\n'  
# 現在我們從第二行切片所有元素:  
print  '第二行的元素是:'  
print a[1,...]  
print  '\n'  
# 現在我們從第二列向後切片所有元素:
print  '第二列及其剩餘元素是:'  
print a[...,1:]

高級索引

     高級索引始終返回數據的副本。 與此相反,切片只提供了一個視圖。

   有兩種類型的高級索引:整數和布爾值。

   整數索引:

import numpy as np 
x = np.array([[1,  2],  [3,  4],  [5,  6]]) 
y = x[[0,1,2],  [0,1,0]]  
print y  ## [1 4 5]

  使用 : 和 ...的高級索引

import numpy as np 
x = np.array([[  0,  1,  2],[  3,  4,  5],[  6,  7,  8],[  9,  10,  11]])  
print  '我們的數組是:'  
print x 
print  '\n'  
# 切片
z = x[1:4,1:3]  
print  '切片之後,我們的數組變爲:'  
print z 
print  '\n'  
# 對列使用高級索引 
y = x[1:4,[1,2]] 
print  '對列使用高級索引來切片:'  
print y

   結果: 

我們的數組是:
[[ 0  1  2] 
 [ 3  4  5] 
 [ 6  7  8]
 [ 9 10 11]]

切片之後,我們的數組變爲:
[[ 4  5]
 [ 7  8]
 [10 11]]

對列使用高級索引來切片:
[[ 4  5]
 [ 7  8]
 [10 11]]

布爾索引

print a[a>5]

 

import numpy as np 
x = np.array([[  0,  1,  2],[  3,  4,  5],[  6,  7,  8],[  9,  10,  11]])  
print  '我們的數組是:'  
print x 
print  '\n'  
# 現在我們會打印出大於 5 的元素  
print  '大於 5 的元素是:'  
print x[x >  5]

   結果

我們的數組是:
[[ 0  1  2] 
 [ 3  4  5] 
 [ 6  7  8] 
 [ 9 10 11]] 

大於 5 的元素是:
[ 6  7  8  9 10 11]









發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章