numpy学习(2):数组创建方式
一、前言
Numerical Python,即數(shù)值Python包,是Python進(jìn)行科學(xué)計(jì)算的一個(gè)基礎(chǔ)包,所以是一個(gè)掌握其他Scipy庫(kù)中模塊的基礎(chǔ)模塊,一定需要先掌握該包的主要使用方式。
- 官網(wǎng):http://www.numpy.org/
- 官方文檔:https://docs.scipy.org/doc/numpy/user/index.html
NumPy模塊是Python的一種開(kāi)源的數(shù)值計(jì)算擴(kuò)展,是一個(gè)用python實(shí)現(xiàn)的科學(xué)計(jì)算包,主要包括:
- 一個(gè)具有矢量算術(shù)運(yùn)算和復(fù)雜廣播能力的快速且節(jié)省空間的多維數(shù)組,稱(chēng)為ndarray(N-dimensional array object)
- 用于對(duì)整組數(shù)據(jù)進(jìn)行快速運(yùn)算的標(biāo)準(zhǔn)數(shù)學(xué)函數(shù):ufunc(universal function object)
- 實(shí)用的線性代數(shù)、傅里葉變換和隨機(jī)數(shù)生成函數(shù)。
- NumPy和稀疏矩陣的運(yùn)算包Scipy配合使用更加方便。
其中,numpy有一個(gè)核心的數(shù)據(jù)結(jié)構(gòu),叫做ndarray。
下面再了解一下ndarray的基本特征。
- NumPy的數(shù)組類(lèi)被稱(chēng)作ndarray。通常被稱(chēng)作數(shù)組。注意numpy.array和標(biāo)準(zhǔn)Python庫(kù)類(lèi)array.array并不相同,后者只處理一維數(shù)組和提供少量功能。
- 一種由相同類(lèi)型的元素組成的多維數(shù)組,元素?cái)?shù)量是實(shí)現(xiàn)給定好的
元素的數(shù)據(jù)類(lèi)型由dtype(data-type)對(duì)象來(lái)指定,每個(gè)ndarray只有一種dtype類(lèi)型 - ndarray的大小固定,創(chuàng)建好數(shù)組后數(shù)組大小是不會(huì)再發(fā)生改變的
二、ndarray對(duì)象創(chuàng)建
可以通過(guò)numpy模塊中的常用的幾個(gè)函數(shù)進(jìn)行創(chuàng)建ndarray多維數(shù)組對(duì)象,主要函數(shù)如下:
- array函數(shù):接收一個(gè)普通的python序列,并將其轉(zhuǎn)換為ndarray
- zeros函數(shù):創(chuàng)建指定長(zhǎng)度或者形狀的全零數(shù)組。
- ones函數(shù):創(chuàng)建指定長(zhǎng)度或者形狀的全1數(shù)組。
- empty函數(shù):創(chuàng)建一個(gè)沒(méi)有任何具體值的數(shù)組(準(zhǔn)備地說(shuō)是創(chuàng)建一些未初始化的ndarray多維數(shù)組)
2.1、array函數(shù)
array對(duì)象的定義:
numpy.array(object, dtype = None, copy = True, order = None, subok = False, ndmin = 0)
上面的構(gòu)造器接受以下參數(shù):
| 1. object | 任何暴露數(shù)組接口方法的對(duì)象都會(huì)返回一個(gè)數(shù)組或任何(嵌套)序列。 |
| 2. dtype | 數(shù)組的所需數(shù)據(jù)類(lèi)型,可選。 |
| 3. copy | 可選,默認(rèn)為true,對(duì)象是否被復(fù)制。 |
| 4. order | C(按行)、F(按列)或A(任意,默認(rèn))。 |
| 5. subok | 默認(rèn)情況下,返回的數(shù)組被強(qiáng)制為基類(lèi)數(shù)組。 如果為true,則返回子類(lèi)。 |
| 6. ndimin | 指定返回?cái)?shù)組的最小維數(shù)。 |
看了這么多定義,下面看看具體的實(shí)例吧。
- 實(shí)例1
輸出:[1 2 3]
<class ‘numpy.ndarray’>
- 創(chuàng)建多個(gè)維度
輸出:
[[1 2]
[3 4]]
- 通過(guò)ndmin控制最小維度
輸出
[[[1 2 3 4 5]]]
ndmin這個(gè)參數(shù)的意思是,不管你給的數(shù)據(jù)的維度是多少,我總是會(huì)創(chuàng)建給出的最小的維度,比如這里ndmin=3,雖然給出的數(shù)據(jù)是一位的,但是也會(huì)創(chuàng)建一個(gè)三維的處理。
2.2、empty函數(shù)
- numpy.empty
創(chuàng)建指定形狀和dtype的未初始化數(shù)組 - numpy.empty(shape, dtype = float, order = ‘C’)
構(gòu)造器接受下列參數(shù):
| 1. Shape | 空數(shù)組的形狀,整數(shù)或整數(shù)元組 |
| 2. Dtype | 所需的輸出數(shù)組類(lèi)型,可選 |
| 3. Order | 'C’為按行的 C 風(fēng)格數(shù)組,'F’為按列的 Fortran 風(fēng)格數(shù)組 |
舉例:
#數(shù)組元素為隨機(jī)值:創(chuàng)建一個(gè)4*4的的矩陣,數(shù)據(jù)為隨機(jī) 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、通過(guò)列表,元祖,元祖列表創(chuàng)建方式
這些主要是通過(guò)列表,元祖,元祖列表來(lái)創(chuàng)建的方式。
- numpy.asarray
類(lèi)似 numpy.array 可以將Python序列轉(zhuǎn)換為ndarray
輸出:
[1 2 3 4]
<class ‘list’>
<class ‘numpy.ndarray’>
2.4、通過(guò)Numpy 來(lái)自數(shù)值范圍的數(shù)組(arange、linespace、logspace)
-
arange函數(shù): 類(lèi)似python的range函數(shù),通過(guò)指定開(kāi)始值、終值和步長(zhǎng)來(lái)創(chuàng)建一個(gè)一維數(shù)組,注意:最終創(chuàng)建的數(shù)組不包含終值
-
linspace函數(shù):通過(guò)指定開(kāi)始值、終值和元素個(gè)數(shù)來(lái)創(chuàng)建一個(gè)一維數(shù)組,數(shù)組的數(shù)據(jù)元素符合等差數(shù)列,可以通過(guò)endpoint關(guān)鍵字指定是否包含終值,默認(rèn)包含終值
-
logspace函數(shù):和linspace函數(shù)類(lèi)似,不過(guò)創(chuàng)建的是等比數(shù)列數(shù)組
使用隨機(jī)數(shù)填充數(shù)組,即使用numpy.random中的random()函數(shù)來(lái)創(chuàng)建0-1之間的隨機(jī)元素,數(shù)組包含的元素?cái)?shù)量由參數(shù)決定 -
numpy.arange
這個(gè)函數(shù)返回ndarray對(duì)象,包含給定范圍內(nèi)的等間隔值
numpy.arange(start,stop,step,dtype)
輸出:
[ 1. 6. 11. 16.]
- numpy.linspace
與arange函數(shù)類(lèi)似 等差數(shù)列
numpy.linspace(start,stop,num,endpoint,retstep,dtype)
| stop | 結(jié)束值 |
| num | 生成等間隔樣例的數(shù)量,默認(rèn)為50 |
| endpoint | 序列中是否包含stop 值 默認(rèn)為 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
等比數(shù)列
numpy.logscale(start, stop, num, endpoint, base, dtype)
| 2. stop | 終止值是base ** stop |
| 3. num | 范圍內(nèi)的數(shù)值數(shù)量,默認(rèn)為50 |
| 4. endpoint | 如果為true,終止值包含在輸出數(shù)組當(dāng)中 |
| 5. base | 對(duì)數(shù)空間的底數(shù),默認(rèn)為10 |
| 6. dtype | 輸出數(shù)組的數(shù)據(jù)類(lèi)型,如果沒(méi)有提供,則取決于其它參數(shù) |
輸出:
[ 2. 4. 8. 16. 32. 64. 128. 256. 512. 1024.]
2.5、random創(chuàng)建方式
- rand 返回 0 - 1 隨機(jī)值
- randn 返回一個(gè)樣本具有標(biāo)準(zhǔn)正態(tài)分布
- randint 返回隨機(jī)的整數(shù),位于半開(kāi)區(qū)間[low,hight)size = 10 (3,3)
- random_integers(low[, high, size]) 返回隨機(jī)的整數(shù),位于閉區(qū)間
- random 返回隨機(jī)浮點(diǎn)數(shù)
總結(jié)
以上是生活随笔為你收集整理的numpy学习(2):数组创建方式的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 高并发之并发容器详解(从入门到超神)
- 下一篇: Java线程池原理及使用