博客 / 詳情

返回

NumPy學習的第一天——ndarray對象

ndarray對象簡介

NumPy 定義了一個 n 維數組對象,簡稱 ndarray 對象,它是一個一系列<u>相同類型元素</u>組成的數組集合,以 0 下標為開始進行集合中元素的索引。數組中的<u>每個元素都佔有大小相同的內存塊</u>,可以使用索引或切片的方式獲取數組中的每個元素

ndarray 對象採用了數組的索引機制,將數組中的每個元素映射到內存塊上,並且按照一定的佈局對內存塊進行排列,常用的佈局方式有兩種,即按行或者按列

ndarray 內部由以下內容組成:

一個指向數據(內存或內存映射文件中的一塊數據)的指針
數據類型或 dtype,描述在數組中的固定大小值的格子
一個表示數組形狀(shape)的元組,表示各維度大小的元組
一個跨度元組(stride),其中的整數指的是為了前進到當前維度下一個元素需要"跨過"的字節數

ndarray 的內部結構:

跨度可以是負數,這樣會使數組在內存中後向移動,切片中 obj[::-1] 或 obj[:,::-1] 就是如此

創建ndarray對象

通過 NumPy 的內置函數 array() 可以創建 ndarray 對象,其語法格式如下:

numpy.array(object, dtype = None, copy = True, order = None, subok = False, ndmin = 0)

參數説明如下:

object 數組或嵌套的數列
dtype 數組元素的數據類型,可選
copy 對象是否能被複制,可選,默認為True
order 以哪種內存佈局創建數組,C為行方向,F為列方向,A為任意方向(默認)
subok 默認返回一個與基類類型一致的數組
ndmin 指定生成數組的最小維度

array() 是創建 ndarray 對象的基本方法


創建一維數組

a=numpy.array([1,2,3])
import numpy
a=numpy.array([1,2,3])#使用列表構建一維數組
print(a)
print(type(a))#ndarray數組類型

輸出如下:

[1 2 3]
<class 'numpy.ndarray'>

創建多維數組

b=numpy.array([[1,2,3],[4,5,6]])
import numpy
b=numpy.array([[1,2,3],[4,5,6]])
print(b)

輸出如下:

[[1 2 3]
[4 5 6]]

改變元素的數據類型

如果要改變數組元素的數據類型,可以使用通過設置 dtype,如下所示:

c=numpy.array([2,4,6,8],dtype="數據類型名稱")

現在將 c 數組中的元素類型變成複數類型:

c=numpy.array([2,4,6,8],dtype="complex")
print(c)

輸出如下:

[2.+0.j 4.+0.j 6.+0.j 8.+0.j]

ndim查看/指定數組維數

通過 ndim 可以查看數組的維度:

import numpy as np 
arr = np.array([[1, 2, 3, 4], [4, 5, 6, 7], [9, 10, 11, 23]]) 
print(arr.ndim) 
2

也可以使用 ndim 參數創建不同維度的數組:

#輸出一個二維數組
import numpy as np
a = np.array([1, 2, 3,4,5], ndim = 2)
print(a)

輸出如下:

[[1 2 3 4 5]]

reshape數組變維

數組的形狀指的是多維數組的行數和列數,Numpy 模塊提供 reshape() 函數可以改變多維數組行數和列數,從而達到數組變維的目的。因此數組變維即對數組形狀的重塑,如圖所示:

畫板

reshape() 函數可以接受一個元組作為參數,用於指定了新數組的行數和列數,示例如下:

import numpy as np 
e = np.array([[1,2],[3,4],[5,6]]) 
print("原數組",e) 
e=e.reshape(2,3) 
print("新數組",e)  

輸出如下:

原數組

[[1 2]
[3 4]
[5 6]]

新數組

[[1 2 3]
[4 5 6]]

user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.