1. 程式人生 > >Python-Numpy多維陣列--來自現有資料的資料,來自數值範圍的資料

Python-Numpy多維陣列--來自現有資料的資料,來自數值範圍的資料

一、NumPy 來自現有資料的陣列

1.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函式:

DEMO 1

# 將列表轉換為 ndarray
import numpy as np
x = [1,2,3]
a = np.asarray(x)
print a
輸出如下:[1 2 3]

DEMO 2

# 設定了 dtype
import numpy as np
x = [1,2,3]
a = np.asarray(x, dtype = float)
print a
輸出如下:[ 1. 2. 3.]

DEMO 3

# 來自元組的 ndarray
import numpy as np
x = (1,2,3)
a = np.asarray(x)
print a
輸出如下:[1 2 3]

DEMO 4

# 來自元組列表的 ndarray
import numpy as np
x = [(1,2,3),(4,5)]
a = np.asarray(x)
print a
輸出如下:[(1, 2, 3) (4, 5)]

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

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

構造器接受下列引數:

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

DEMO

下面的例子展示了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']

3.numpy.fromiter函式從任何可迭代物件構建一個ndarray物件,返回一個新的一維陣列。

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

構造器接受下列引數:

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

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

DEMO 1

# 使用 range 函式建立列表物件
import numpy as np
list = range(5)
print list
輸出如下:[0, 1, 2, 3, 4]

DEMO2

# 從列表中獲得迭代器
import numpy as np
list = range(5)
it = iter(list)
# 使用迭代器建立 ndarray
x = np.fromiter(it, dtype = float)
print x
輸出如下:[0. 1. 2. 3. 4.]

二、NumPy - 來自數值範圍的陣列

1.numpy.arange這個函式返回ndarray物件,包含給定範圍內的等間隔值。​​​​​​​

numpy.arange(start, stop, step, dtype)

構造器接受下列引數:

序號 引數及描述
1. start 範圍的起始值,預設為0
2. stop 範圍的終止值(不包含)
3. step 兩個值的間隔,預設為1
4. dtype 返回ndarray的資料型別,如果沒有提供,則會使用輸入資料的型別。

下面的例子展示瞭如何使用該函式:

DEMO 1

import numpy as np
x = np.arange(5)
print x
輸出如下:[0 1 2 3 4]

DEMO 2​​​​​​​

import numpy as np
# 設定了 dtype
x = np.arange(5, dtype = float)
print x
輸出如下:[0. 1. 2. 3. 4.]

DEMO 3

# 設定了起始值和終止值引數
import numpy as np
x = np.arange(10,20,2)
print x
輸出如下:[10 12 14 16 18]

3.numpy.linspace此函式類似於arange()函式。 在此函式中,指定了範圍之間的均勻間隔數量,而不是步長。 此函式的用法如下。

numpy.linspace(start, stop, num, endpoint, retstep, dtype)

構造器接受下列引數:

序號 引數及描述
1. start 序列的起始值
2. stop 序列的終止值,如果endpointtrue,該值包含於序列中
3. num 要生成的等間隔樣例數量,預設為50
4. endpoint 序列中是否包含stop值,預設為ture
5. retstep 如果為true,返回樣例,以及連續數字之間的步長
6. dtype 輸出ndarray的資料型別

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

DEMO1

import numpy as np
x = np.linspace(10,20,5)
print x
輸出如下:[10. 12.5 15. 17.5 20.]

DEMO2​​​​​​​

# 將 endpoint 設為 false
import numpy as np
x = np.linspace(10,20, 5, endpoint = False)
print x
輸出如下:
[10. 12. 14. 16. 18.]

DEMO 3​​​​​​​

# 輸出 retstep 值
import numpy as np
x = np.linspace(1,2,5, retstep = True)
print x
# 這裡的 retstep 為 0.25
輸出如下:(array([ 1. , 1.25, 1.5 , 1.75, 2. ]), 0.25)

4.numpy.logspace此函式返回一個ndarray物件,其中包含在對數刻度上均勻分佈的數字。 刻度的開始和結束端點是某個底數的冪,通常為 10。

numpy.logscale(start, stop, num, endpoint, base, dtype)

logspace函式的輸出由以下引數決定:

序號 引數及描述
1. start 起始值是base ** start
2. stop 終止值是base ** stop
3. num 範圍內的數值數量,預設為50
4. endpoint 如果為true,終止值包含在輸出陣列當中
5. base 對數空間的底數,預設為10
6. dtype 輸出陣列的資料型別,如果沒有提供,則取決於其它引數

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

DEMO 1​​​​​​​

import numpy as np
# 預設底數是 10
a = np.logspace(1.0, 2.0, num = 10)
print a
輸出如下:[ 10. 12.91549665 16.68100537 21.5443469 27.82559402, 35.93813664 46.41588834 59.94842503 77.42636827 100. ]

DEMO 2​​​​​​​

# 將對數空間的底數設定為 2
import numpy as np
a = np.logspace(1,10,num = 10, base = 2)
print a
輸出如下:[ 2. 4. 8. 16. 32. 64. 128. 256. 512. 1024.]

​​​​​​​