numpy学习2:数组创建方式
一、前言
Numerical Python,即數值Python包,是Python進行科學計算的一個基礎包,所以是一個掌握其他Scipy庫中模塊的基礎模塊,一定需要先掌握該包的主要使用方式。
- 官網:http://www.numpy.org/
- 官方文檔:https://docs.scipy.org/doc/numpy/user/index.html
NumPy模塊是Python的一種開源的數值計算擴展,是一個用python實現的科學計算包,主要包括:
- 一個具有矢量算術運算和復雜廣播能力的快速且節省空間的多維數組,稱為ndarray(N-dimensional array object)
- 用于對整組數據進行快速運算的標準數學函數:ufunc(universal function object)
- 實用的線性代數、傅里葉變換和隨機數生成函數。
- NumPy和稀疏矩陣的運算包Scipy配合使用更加方便。
其中,numpy有一個核心的數據結構,叫做ndarray。
下面再了解一下ndarray的基本特征。
- NumPy的數組類被稱作ndarray。通常被稱作數組。注意numpy.array和標準Python庫類array.array并不相同,后者只處理一維數組和提供少量功能。
- 一種由相同類型的元素組成的多維數組,元素數量是實現給定好的
元素的數據類型由dtype(data-type)對象來指定,每個ndarray只有一種dtype類型 - ndarray的大小固定,創建好數組后數組大小是不會再發生改變的
二、ndarray對象創建
可以通過numpy模塊中的常用的幾個函數進行創建ndarray多維數組對象,主要函數如下:
- array函數:接收一個普通的python序列,并將其轉換為ndarray
- zeros函數:創建指定長度或者形狀的全零數組。
- ones函數:創建指定長度或者形狀的全1數組。
- empty函數:創建一個沒有任何具體值的數組(準備地說是創建一些未初始化的ndarray多維數組)
2.1、array函數
array對象的定義:
numpy.array(object, dtype = None, copy = True, order = None, subok = False, ndmin = 0)
上面的構造器接受以下參數:
| 1. object | 任何暴露數組接口方法的對象都會返回一個數組或任何(嵌套)序列。 |
| 2. dtype | 數組的所需數據類型,可選。 |
| 3. copy | 可選,默認為true,對象是否被復制。 |
| 4. order | C(按行)、F(按列)或A(任意,默認)。 |
| 5. subok | 默認情況下,返回的數組被強制為基類數組。 如果為true,則返回子類。 |
| 6. ndimin | 指定返回數組的最小維數。 |
看了這么多定義,下面看看具體的實例吧。
- 實例1
輸出:[1 2 3]
<class ‘numpy.ndarray’>
- 創建多個維度
輸出:
[[1 2]
[3 4]]
- 通過ndmin控制最小維度
輸出
[[[1 2 3 4 5]]]
ndmin這個參數的意思是,不管你給的數據的維度是多少,我總是會創建給出的最小的維度,比如這里ndmin=3,雖然給出的數據是一位的,但是也會創建一個三維的處理。
2.2、empty函數
- numpy.empty
創建指定形狀和dtype的未初始化數組 - numpy.empty(shape, dtype = float, order = ‘C’)
構造器接受下列參數:
| 1. Shape | 空數組的形狀,整數或整數元組 |
| 2. Dtype | 所需的輸出數組類型,可選 |
| 3. Order | 'C’為按行的 C 風格數組,'F’為按列的 Fortran 風格數組 |
舉例:
#數組元素為隨機值:創建一個4*4的的矩陣,數據為隨機 arr = np.empty((4,4),dtype = 'i1') print(arr)輸出:
[[ 1 0 0 0]
[ 0 0 0 0]
[ 48 6 50 38]
[ -7 127 0 0]]
- numpy.zeros
返回特定大小,以0填充
- numpy.ones
返回特定大小,以1填充
輸出:
[[[1. 1. 1. 1.][1. 1. 1. 1.][1. 1. 1. 1.]][[1. 1. 1. 1.][1. 1. 1. 1.][1. 1. 1. 1.]]] [[(1, 1) (1, 1) (1, 1)][(1, 1) (1, 1) (1, 1)][(1, 1) (1, 1) (1, 1)]]2.3、通過列表,元祖,元祖列表創建方式
這些主要是通過列表,元祖,元祖列表來創建的方式。
- numpy.asarray
類似 numpy.array 可以將Python序列轉換為ndarray
輸出:
[1 2 3 4]
<class ‘list’>
<class ‘numpy.ndarray’>
2.4、通過Numpy 來自數值范圍的數組(arange、linespace、logspace)
-
arange函數: 類似python的range函數,通過指定開始值、終值和步長來創建一個一維數組,注意:最終創建的數組不包含終值
-
linspace函數:通過指定開始值、終值和元素個數來創建一個一維數組,數組的數據元素符合等差數列,可以通過endpoint關鍵字指定是否包含終值,默認包含終值
-
logspace函數:和linspace函數類似,不過創建的是等比數列數組
使用隨機數填充數組,即使用numpy.random中的random()函數來創建0-1之間的隨機元素,數組包含的元素數量由參數決定 -
numpy.arange
這個函數返回ndarray對象,包含給定范圍內的等間隔值
numpy.arange(start,stop,step,dtype)
輸出:
[ 1. 6. 11. 16.]
- numpy.linspace
與arange函數類似 等差數列
numpy.linspace(start,stop,num,endpoint,retstep,dtype)
| stop | 結束值 |
| num | 生成等間隔樣例的數量,默認為50 |
| endpoint | 序列中是否包含stop 值 默認為 True |
輸出:
[10. 11.25 12.5 13.75 15. 16.25 17.5 18.75 20. ]
[10. 12. 14. 16. 18.]
(array([10. , 12.5, 15. , 17.5, 20. ]), 2.5)
- numpy.logspace
等比數列
numpy.logscale(start, stop, num, endpoint, base, dtype)
| 2. stop | 終止值是base ** stop |
| 3. num | 范圍內的數值數量,默認為50 |
| 4. endpoint | 如果為true,終止值包含在輸出數組當中 |
| 5. base | 對數空間的底數,默認為10 |
| 6. dtype | 輸出數組的數據類型,如果沒有提供,則取決于其它參數 |
輸出:
[ 2. 4. 8. 16. 32. 64. 128. 256. 512. 1024.]
2.5、random創建方式
- rand 返回 0 - 1 隨機值
- randn 返回一個樣本具有標準正態分布
- randint 返回隨機的整數,位于半開區間[low,hight)size = 10 (3,3)
- random_integers(low[, high, size]) 返回隨機的整數,位于閉區間
- random 返回隨機浮點數
文章有不當之處,歡迎指正,如果喜歡微信閱讀,你也可以關注我的微信公眾號:cplus人工智能算法后端技術,獲取優質學習資源。
總結
以上是生活随笔為你收集整理的numpy学习2:数组创建方式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: numpy学习:安装anaconda及使
- 下一篇: numpy学习3:对象属性和基本数据类型