NumPy來自現有資料的陣列


NumPy - 來自現有資料的陣列

這一章中,我們會討論如何從現有資料建立陣列。

numpy.asarray

此函式類似於numpy.array,除了它有較少的引數。 這個例程對於將 Python 序列轉換為ndarray非常有用。

numpy.asarray(a, dtype = None, order = None)

構造器接受下列引數:

序號 引數及描述
1. a 任意形式的輸入引數,比如列表、列表的元組、元組、元組的元組、元組的列表
2. dtype 通常,輸入資料的型別會應用到返回的ndarray
3. order 'C'為按行的 C 風格陣列,'F'為按列的 Fortran 風格陣列

下面的例子展示了如何使用asarray函式:

範例 1

# 將列表轉換為 ndarray 
import numpy as np 

x =  [1,2,3] 
a = np.asarray(x)  
print a

輸出如下:

[1  2  3]

範例 2

# 設定了 dtype  
import numpy as np 

x =  [1,2,3] 
a = np.asarray(x, dtype =  float)  
print a

輸出如下:

[ 1.  2.  3.]

範例 3

# 來自元組的 ndarray  
import numpy as np 

x =  (1,2,3) 
a = np.asarray(x)  
print a

輸出如下:

[1  2  3]

範例 4

# 來自元組列表的 ndarray
import numpy as np 

x =  [(1,2,3),(4,5)] 
a = np.asarray(x)  
print a

輸出如下:

[(1, 2, 3) (4, 5)]

numpy.frombuffer

此函式將緩衝區解釋為一維陣列。 暴露緩衝區介面的任何物件都用作引數來返回ndarray

numpy.frombuffer(buffer, dtype = float, count = -1, offset = 0)

構造器接受下列引數:

序號 引數及描述
1. buffer 任何暴露緩衝區藉口的物件
2. dtype 返回陣列的資料型別,預設為float
3. count 需要讀取的資料數量,預設為-1,讀取所有資料
4. offset 需要讀取的起始位置,預設為0

範例

下面的例子展示了frombuffer函式的用法。

import numpy as np 
s =  'Hello World' 
a = np.frombuffer(s, dtype =  'S1')  
print a

輸出如下:

['H'  'e'  'l'  'l'  'o'  ' '  'W'  'o'  'r'  'l'  'd']

numpy.fromiter

此函式從任何可疊代物件構建一個ndarray物件,返回一個新的一維陣列。

numpy.fromiter(iterable, dtype, count = -1)

構造器接受下列引數:

序號 引數及描述
1. iterable 任何可疊代物件
2. dtype 返回陣列的資料型別
3. count 需要讀取的資料數量,預設為-1,讀取所有資料

以下範例展示了如何使用內建的range()函式返回列表物件。 此列表的疊代器用於形成ndarray物件。

範例 1

# 使用 range 函式建立列表物件  
import numpy as np 
list = range(5)  
print list

輸出如下:

[0,  1,  2,  3,  4]

範例 2

# 從列表中獲得疊代器  
import numpy as np 
list = range(5) 
it = iter(list)  
# 使用疊代器建立 ndarray 
x = np.fromiter(it, dtype =  float)  
print x

輸出如下:

[0.   1.   2.   3.   4.]