NumPy的核心特徵之一就是N-維數組對象——ndarray。該數組容許你使用相似於標量的操做語法在整塊數據上進行數學計算。python
接下來讓咱們舉個例子感覺一下:數組
#!/usr/bin/python # -*- coding: UTF-8 -*- import numpy as np # 生成隨機數組 data = np.random.randn(2,3) print(data) # 給數組加上一個數學操做 print(data * 10) print(data + data)
結果以下:dom
ndarray是一系列同類型數據的集合,以 0 下標爲開始進行集合中元素的索引。函數
ndarray 對象是用於存放同類型元素的多維數組。spa
ndarray 中的每一個元素在內存中都有相同存儲大小的區域。3d
ndarray中比較重要的屬性code
咱們經常使用的最簡單的建立數組的方式就是使用array函數。對象
array函數能夠將一個序列型對象轉換成爲NumPy數組。例如:blog
data_list = [6, 7.5, 8, 0, 1] arr_list = np.array(data_list) print(arr_list)
結果:索引
array函數還會將嵌套序列,自動轉換成多維數組。
data_list2 = [[1,2,3,4],[5,6,7,8]] arr_list2 = np.array(data_list2) print(arr_list2) # 由於data_list2是一個包含列表的列表,因此NumPy數組arr_list2造成了一個二維數組 # 咱們能夠經過shape和ndim(ndim:秩,即軸的數量或維度的數量)肯定 print(arr_list2.shape) print(arr_list2.ndim)
輸出:
arange是Python內建函數range的數組版。
其餘能夠建立數組的函數有:
numpy.empty
建立一個指定形狀(shape)、數據類型(dtype)且未初始化的數組,注意 − 數組元素爲隨機值,由於它們未初始化。
numpy.zeros
建立指定大小的數組,數組元素以 0 來填充。
numpy.ones
建立指定形狀的數組,數組元素以 1 來填充:
empty_arr = np.empty((3,4),dtype=int) print(empty_arr) zero_arr = np.zeros((2,3)) print(zero_arr) one_arr = np.ones((4,4)) print(one_arr)
numpy.linspace
numpy.linspace 函數用於建立一個一維數組,數組是一個等差數列構成的,格式以下:
np.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)
參數說明:
numpy.logspace
numpy.logspace 函數用於建立一個於等比數列。格式以下:
np.logspace(start, stop, num=50, endpoint=True, base=10.0, dtype=None)
參數說明:
數據類型,即dtype,是一個特殊的對象。它包含了ndarray須要爲某一種類型的數據所申明的內存塊信息。
Numpy經常使用的數據類型:
可使用astype方法來顯式地轉換數組的數據類型。
向量化——能夠對數組進行批量操做而無須任何for循環的特性。
num = np.array([[1,2,3,4],[5,6,7,8]]) print(num) print(num + num) print(num * num) print(1 / num) print(num ** 0.5)
輸出以下:
num2 = np.random.randint(100,size=(2,4)) print(num2 > num)
結果以下:
廣播是指 NumPy 在算術運算期間處理不一樣形狀的數組的能力。對數組的算術運算一般在相應的元素上進行。
若是兩個數組的維數不相同,則元素到元素的操做是不可能的。 然而,在 NumPy 中仍然能夠對形狀不類似的數組進行操做,由於它擁有廣播功能。
較小的數組會廣播到較大數組的大小,以便使它們的形狀可兼容。
當運算中的 2 個數組的形狀不一樣時,numpy 將自動觸發廣播機制。如:
a = np.array([[0, 0, 0], [10, 10, 10], [20, 20, 20], [30, 30, 30]]) b = np.array([1, 2, 3]) print(a + b)
下面的圖片展現了數組 b 如何經過廣播來與數組 a 兼容。
廣播的規則: