02_ndarray的創建方式

ndarray的創建方式

  • np.array()
    將輸入的列表、元組、數組等序列類型轉換爲ndaray對象
import numpy as np

# data1也可以是tuple類型
# data1可以進行嵌套
data = [[1,2,3], [4,5,6]]
arr1 = np.array(data)
arr1
>>> array([[1, 2, 3],
           [4, 5, 6]])
  • np.asarray()
    array() 和 asarray() 都可以將結構數據轉化爲 ndarray,但是主要區別就是當數據源是 ndarray 時,array 仍然會 copy 出一個副本,佔用新的內存,但 asarray 不會
arr2 = np.asarray(arr1)
arr2
>>> array([[1, 2, 3],
           [4, 5, 6]])
  • np.zeros()
    根據指定形狀創建一個全爲 0 的 ndarray 對象
arr3 = np.zeros([3, 4])
arr3
>>> array([[0., 0., 0., 0.],
           [0., 0., 0., 0.],
           [0., 0., 0., 0.]])
  • np.zeros_like()
    傳入一個數組作爲參數,根據該數組的形狀和 dtype 創建一個全 0 的 ndarray 對象
arr4 = np.zeros_like(data)
arr4
>>> array([[0, 0, 0],
           [0, 0, 0]])
  • np.ones()
    根據指定形狀創建一個全爲 1 的 ndarray 對象
arr5 = np.ones([2, 3])
arr5
>>> array([[1., 1., 1.],
           [1., 1., 1.]])
  • np.ones_like()
    傳入一個數組作爲參數,根據該數組的形狀和 dtype 創建一個全 1 的 ndaray 對象
arr6 = np.ones_like(data)
arr6
>>> array([[1, 1, 1],
           [1, 1, 1]])
  • np.empty()
    根據指定形狀創建 ndarray 對象,只分配內存但是不填充任何值
arr7 = np.empty([2, 2]) 
arr7
>>> array([[            nan,             nan],
           [3.50977942e+064, 2.19121974e-314]])
  • np.empty_like()
    同上
arr8 = np.empty_like(data)
arr8
>>> array([[4607182418800017408, 4607182418800017408, 4607182418800017408],
           [4607182418800017408, 4607182418800017408, 4607182418800017408]])
  • np.full()
    根據指定形狀傳建一個ndarray對象,並用fill_value的值進行填充
arr9 = np.full([2,3], fill_value=3)
arr9
>>> array([[3, 3, 3],
           [3, 3, 3]])
  • np.full_like()
    傳入一個數組作爲參數,根據該數組的形狀創建一個 ndarray 對象,並用 fill_value 的值進行填充
arr10 = np.full_like(data, 8)
arr10
>>> array([[8, 8, 8],
           [8, 8, 8]])
  • np.eye()
    傳入一個整數N,創建一個N * N的單位矩陣
"""
numpy.eye(N, M=None, k=0, dtype=<class‘float’>, order=’C’)
N: 行數
M:列數,默認等於N
k:對角線索引:0(默認)爲主對角線,正值是指上對角線,負值是指到下對角線
order: {'C', 'F'}輸出是否應存儲在主要行(C樣式)中或內存中的列主(Fortran樣式)順序
"""
arr12 = np.eye(5)
arr12
>>> array([[1., 0., 0., 0., 0.],
           [0., 1., 0., 0., 0.],
           [0., 0., 1., 0., 0.],
           [0., 0., 0., 1., 0.],
           [0., 0., 0., 0., 1.]])
  • np.identity()
    傳入一個整數 N,創建一個 N * N 的單位矩陣
# numpy.identity(n, dtype=None)
arr11 = np.identity(5)
arr11
>>> array([[1., 0., 0., 0., 0.],
           [0., 1., 0., 0., 0.],
           [0., 0., 1., 0., 0.],
           [0., 0., 0., 1., 0.],
           [0., 0., 0., 0., 1.]])
  • np.random
    隨機抽樣創建
arr13 = np.random.randn(2, 3)
arr13
>>> array([[-1.39806737,  1.29424428,  0.43693913],
           [ 1.3599019 ,  1.43063895,  0.84105025]])
  • np.arange()
    在給定間隔內返回均勻間隔的值(一維數組)
"""
參數
start:開始位置,數字,可選,默認值爲0
stop:結束位置,數字,
step:步長,數字,可選,默認爲1。如果指定step則必須指定start
dtype:類型。不指定則自動推斷
"""
arr14 = np.arange(start=0, stop=10, step=2)
arr14
>>> array([0, 2, 4, 6, 8])
  • np.linspace()
    返回指定間隔內的等距數字。
arr15 = np.linspace(0, 10, 5)
arr15
>>> array([ 0. ,  2.5,  5. ,  7.5, 10. ])
  • np.fromfunction()
    通過對每個座標執行函數來構造數組
def fun(x, y):
    return x * 10 + y

np.fromfunction(fun, (4, 5), dtype=np.int)
>>> array([[ 0,  1,  2,  3,  4],
           [10, 11, 12, 13, 14],
           [20, 21, 22, 23, 24],
           [30, 31, 32, 33, 34]])

def my_dot(a, b):
    return a * b

np.fromfunction(my_dot, (2, 3))
>>> array([[0., 0., 0.],
           [0., 1., 2.]])

np.fromfunction(lambda i,j:i+j,(2, 3))
>>> array([[0., 1., 2.],
           [1., 2., 3.]])
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章