NumPy的主要對象是同種元素的多維數組。這是一個所有的元素都是一種類型、通過一個正整數元組索引的元素表格(通常是元素是數字)。
在NumPy中維度(dimensions)叫做軸(axes),軸的個數叫做秩(rank,但是和線性代數中的秩不是一樣的,在用python求線代中的秩中,我們用numpy包中的linalg.matrix_rank方法計算矩陣的秩,例子如下)。
結果是:

線性代數中秩的定義:設在矩陣A中有一個不等于0的r階子式D,且所有r+1階子式(如果存在的話)全等于0,那末D稱為矩陣A的最高階非零子式,數r稱為矩陣A的秩,記作R(A)。
numpy中數組和矩陣的區別:
matrix是array的分支,matrix和array在很多時候都是通用的,你用哪一個都一樣。但這時候,官方建議大家如果兩個可以通用,那就選擇array,因為array更靈活,速度更快,很多人把二維的array也翻譯成矩陣。
但是matrix的優勢就是相對簡單的運算符號,比如兩個矩陣相乘,就是用符號*,但是array相乘不能這么用,得用方法.dot()
array的優勢就是不僅僅表示二維,還能表示3、4、5...維,而且在大部分Python程序里,array也是更常用的。
現在我們討論numpy的多維數組
例如,在3D空間一個點的坐標[1, 2, 3]是一個秩為1的數組,因為它只有一個軸。那個軸長度為3.又例如,在以下例子中,數組的秩為2(它有兩個維度).第一個維度長度為2,第二個維度長度為3.
[[ 1., 0., 0.], [ 0., 1., 2.]]
NumPy的數組類被稱作ndarray。通常被稱作數組。注意numpy.array和標準Python庫類array.array并不相同,后者只處理一維數組和提供少量功能。更多重要ndarray對象屬性有:
ndarray.ndim
數組軸的個數,在python的世界中,軸的個數被稱作秩
ndarray.shape
數組的維度。這是一個指示數組在每個維度上大小的整數元組。例如一個n排m列的矩陣,它的shape屬性將是(2,3),這個元組的長度顯然是秩,即維度或者ndim屬性
ndarray.size
數組元素的總個數,等于shape屬性中元組元素的乘積。
ndarray.dtype
一個用來描述數組中元素類型的對象,可以通過創造或指定dtype使用標準Python類型。另外NumPy提供它自己的數據類型。
ndarray.itemsize
數組中每個元素的字節大小。例如,一個元素類型為float64的數組itemsiz屬性值為8(=64/8),又如,一個元素類型為complex32的數組item屬性為4(=32/8).
ndarray.data
包含實際數組元素的緩沖區,通常我們不需要使用這個屬性,因為我們總是通過索引來使用數組中的元素。
一個例子1
>>> from numpy import *>>> a = arange(15).reshape(3, 5)>>> aarray([[ 0, 1, 2, 3, 4], [ 5, 6, 7, 8, 9], [10, 11, 12, 13, 14]])>>> a.shape(3, 5)>>> a.ndim2>>> a.dtype.name'int32'>>> a.itemsize4>>> a.size15>>> type(a)numpy.ndarray>>> b = array([6, 7, 8])>>> barray([6, 7, 8])>>> type(b)numpy.ndarray
新聞熱點
疑難解答