目錄
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.])
'''