NumPy創建數組


1. NumPy創建數組

1.1 numpy.empty

創建一個指定形狀(shape)、數據類型(dtype)且未初始化的數組

np.empty(shape, dtype=float, order='C')

'''
參數:
shape:數組形狀
dtype:數據類型
order:有"C"和"F"兩個選項,分別代表,行優先和列優先,在計算機內存中的存儲元素的順序。
'''
import numpy as np
np.empty([3, 2], dtype=int)
'''
array([[         0,          0],
       [         0, 1072693248],
       [         0, 1073741824]])
'''

注意 − 數組元素為隨機值,因為它們未初始化。

1.2 numpy.zeros

創建指定形狀的數組,數組元素以0來填充。

np.zeros(shape, dtype=float, order='C')
import numpy as np

# 默認為浮點型
np.zeros(5)

# 設置為整型
np.zeros((5,), dtype=np.int)

# 自定義類型
np.zeros((2, 2), dtype=[('x', 'i4'), ('y', 'i4')])

1.3 numpy.ones

創建指定形狀的數組,數組元素以1來填充。

np.ones(shape, dtype=float, order='C')
import numpy as np

# 默認為浮點型
np.ones(5)

# 自定義類型
np.ones((2, 2), dtype=int)

1.4 numpy.eye

根據指定形狀創建單位矩陣。

np.eye(N, M=None, k, dtype=<class 'float'>, order='C')

'''
參數:
N:指定的行數。
M:指定的列數,如果為None,則等於N。
k:對角線的下標,默認為0表示的是主對角線,負數表示的是低對角,正數表示的是高對角。
'''
import numpy as np

np.eye(3)
'''
結果為:
array([[1., 0., 0.],
       [0., 1., 0.],
       [0., 0., 1.]])
'''

np.eye(3, 3, k=1)
'''
結果為:
array([[0., 1., 0.],
       [0., 0., 1.],
       [0., 0., 0.]])
'''

2. NumPy從已有數組創建數組

2.1 numpy.asarray

類似於numpy.array,但是只有三個參數

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

# a:任意形式的輸入參數,可以是,列表, 列表的元組, 元組, 元組的元組, 元組的列表,多維數組

2.2 numpy.frombuffer

用於實現動態數組,接受buffer輸入參數,以流的形式讀入轉化成ndarray對象。

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

'''
參數:
buffer:可以是任意對象,會以流的形式讀入。
count:讀取的數據數量,默認為-1,讀取所有數據。
offset:讀取的起始位置,默認為0。
'''
import numpy as np

st = b'hello world'
np.frombuffer(s, dtype='S1')

# 結果為:array([b'H', b'e', b'l', b'l', b'o', b' ', b'W', b'o', b'r', b'l', b'd'])

2.3 numpy.fromiter

從可迭代對象中建立ndarray對象,並返回一維數組。

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

'''
參數:
iterable:可迭代對象
count:讀取的數據數量,默認為-1,讀取所有數據
'''
import numpy as np

lst = range(5)
it = iter(lst)

# 使用迭代器創建ndarray對象
np.fromiter(it, dtype=float)

# 結果為:array([0., 1., 2., 3., 4.])

3. NumPy從數值范圍創建數組

3.1 numpy.arange

使用arange函數創建數值范圍並返回ndarray對象。

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

'''
參數:
start:起始值,默認為0
stop:終止值,不包含
step:步長,默認為1
'''
import numpy as np

# 生成0-5的數組
np.arange(5)

# 返回類型為float
np.arange(5, dtype=float)

# 設置起始值,終止值,步長
np.arange(1, 10, 2)

3.2 numpy.linspace

創建一個一維數組,且數組為等差數列。

np.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)

'''
參數:
start:起始值
stop:終止值,如果endpoint為True,則包含
num:要生成的等步長的樣本數量,默認為50
endpoint: 該值為 true 時,數列中中包含stop值,反之不包含,默認是True。
retstep: 如果為 True 時,生成的數組中會顯示間距,反之不顯示。
'''
import numpy as np

# 元素全是1的等差數列
np.linspace(1, 1, 10)	# array([1., 1., 1., 1., 1., 1., 1., 1., 1., 1.])

# 不包含終止值
np.linspace(10, 20, 5, endpoint=False)
# array([10., 12., 14., 16., 18., 20.])

# 設置間距
np.linspace(1, 10, 10, retstep=True)
# array([1., 2., 3., 4., 5., 6., 7., 8., 9., 10.], 1.0)

# 拓展
np.linspace(1,10,10).reshape([10,1])
'''
結果為:
array([[1.]
	   [2.]
	   [3.]
	   [4.]
	   [5.]
	   [6.]
	   [7.]
	   [8.]
	   [9.]
	   [10.]])
'''

3.3 numpy.logspace

創建一個等比數列

np.logspace(start, stop, num=50, endpoint=True, base=10.0, dtype=None)

'''
參數:
base:對數log的底數
其他參數np.linspace()
'''
import numpy as np

# 默認以10為底數
np.logspace(1.0, 2.0, num=10)

'''
結果為:
array([10., 12.91549665, 16.68100537, 21.5443469, 27.82559402, 
       35.93813664, 46.41588834, 59.94842503, 77.42636827, 100.])
'''

# 設置以2為底數
np.logspace(0, 9, 10, base=2)
'''
結果為:
array([1., 2., 4., 8., 16., 32., 64., 128., 256., 512.])
'''


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM