【Python數據分析】NumPy之數組對象基礎


1.數組對象基礎

ndarray是NumPy的核心功能,其含義是:n-dimensional array,即多維數組。在Python中萬物皆對象,數組也是一個對象,數組是NumPy的一個重要數據結構。

2.初識數組對象

在Jupyter中查看NumPy的版本(按shift + enter即可運行代碼)

import numpy as np
np.__version__

輸出結果如下:

2.1 創建第一個數組

In [2]: data = np.array([1, 2, 3, 4, 5, 6])

In [3]: data
Out[3]: array([1, 2, 3, 4, 5, 6])

In [4]: type(data)
Out[4]: numpy.ndarray

小提示:此處可以使用dir(data)查看數組對象的屬性和方法。如果使用data?可以打開數組的官方文檔

2.2 數組元素的類型dtype

# dtype可以查看數組元素的類型
In [9]: data.dtype
Out[9]: dtype('int32')

從輸出結果得出數組元素的類型為int32,即32位的整數。
數組元素類型的改變


In [18]: new_data = data.astype(np.float)

In [19]: new_data.dtype
Out[19]: dtype('float64')

In [20]: data, data.dtype
Out[20]: (array([1, 2, 3, 4, 5, 6]), dtype('int32'))

In [21]: new_data
Out[21]: array([1., 2., 3., 4., 5., 6.])

數組data相對於new_data只有數組元素類型不同

2.2 數組的外貌

(1)shape可以查看數組的形狀

In [22]: data2 = np.array([1, 2, 3, 4])

In [23]: data2.shape
Out[23]: (4,)

返回結果表示是一維數組。
(2)ndim返回數組的維度


In [24]: data2.ndim
Out[24]: 1

(3) size返回數組元素的個數

In [25]: data2.size
Out[25]: 4

NumPy常用數組對象屬性表

屬性 說明
dtype 返回數組元素的類型
shape 返回由整數組成的元組,元組中的每個整數依次對應數組的每個軸的元素個數
size 返回一個整數,代表數組元素中的個數
ndim 返回一個整數,代表數組軸的個數,即維度
nbytes 返回一個整數,代表用於保存數組的字節數

小提示:可以通過help(data2.dtype)或者data2.dtype?查看幫助文檔

3.數組的創建方法

3.1 基本方法

# 一維數組創建
In [31]: np.array([1, 2, 3, 4, 5], dtype=float)
Out[31]: array([1., 2., 3., 4., 5.])

# 多維數組創建
# 通過嵌套列表創建的數組就是多維數組

In [33]: np.array([[1, 2, 3],[10, 20, 30],[100, 200, 300]])
Out[33]:
array([[  1,   2,   3],
       [ 10,  20,  30],
       [100, 200, 300]])
# 注意:嵌套列表的每個元素的長度與類型都必須一致

(3)指定維度創建

# ndmin指定最小維度數
In [39]: data3 = np.array([1, 2, 3, 4, 5, 6, 7, 8], ndmin=2)

In [40]: data3.shape
Out[40]: (1, 8)

3.2 用函數創建數組

In [41]: np.zeros((2,10))
Out[41]:
array([[0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],
       [0., 0., 0., 0., 0., 0., 0., 0., 0., 0.]])

此處的np.zeros()能夠創建一個完全由0組成的數組,(2,10)是以元組形式聲明該數組的形狀

NumPy中創建特殊數組的函數

函數 說明
asarray 輸入參數為列表、元組,或者由他們組成的嵌套對象或數組,返回一個數組。如果參數是數組,則返回該數組本身
arange 根據開始值、結束值和步長創建一個數組
ones、ones_like ones根據指定的形狀和元素類型,創建元素值為1的數組。ones_like創建一個與某指定數組完全一樣但元素值是1的數組
zeros、zeros_like 與上述相同,只不過元素是0
empty、empty_like 與上述相同,只不過沒有填充任何元素數據,但分配了內存空間
eye、identity 創建對角線元素是1、其他元素是0的二維數組
diag 創建對角線元素是指定值,其余元素是0的二維數組
linspace 根據開始值、結束值和元素數量創建元素是等差數列的數組
logspace 根據開始值、結束值和元素數量和對數底創建元素是等比數列的數組

3.3 創建自定義類型的數組

In [67]: my_type = np.dtype([('name',str, 20),('age',np.int8),('salary', np.float32)])

In [68]: items = np.array([('Jack',18,1000.00),('Lucy',19,2000.00)], dtype=my_type)

In [69]: print(items.dtype)
[('name', '<U20'), ('age', 'i1'), ('salary', '<f4')]

3.4 form系列的函數創建數組

創建9*9乘法結果表數組

In [74]: np.fromfunction(lambda i, j:(i+1)*(j+1), (9, 9), dtype=np.int)
Out[74]:
array([[ 1,  2,  3,  4,  5,  6,  7,  8,  9],
       [ 2,  4,  6,  8, 10, 12, 14, 16, 18],
       [ 3,  6,  9, 12, 15, 18, 21, 24, 27],
       [ 4,  8, 12, 16, 20, 24, 28, 32, 36],
       [ 5, 10, 15, 20, 25, 30, 35, 40, 45],
       [ 6, 12, 18, 24, 30, 36, 42, 48, 54],
       [ 7, 14, 21, 28, 35, 42, 49, 56, 63],
       [ 8, 16, 24, 32, 40, 48, 56, 64, 72],
       [ 9, 18, 27, 36, 45, 54, 63, 72, 81]])


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM