日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

python输入数组并计算_利用Python进行数据分析——Numpy基础:数组和矢量计算

發(fā)布時間:2024/10/14 python 69 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python输入数组并计算_利用Python进行数据分析——Numpy基础:数组和矢量计算 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

利用Python進(jìn)行數(shù)據(jù)分析——Numpy基礎(chǔ):數(shù)組和矢量計算

ndarry,一個具有矢量運(yùn)算和復(fù)雜廣播能力快速節(jié)省空間的多維數(shù)組

對整組數(shù)據(jù)進(jìn)行快速運(yùn)算的標(biāo)準(zhǔn)數(shù)學(xué)函數(shù),無需for—loop

用于讀寫磁盤數(shù)據(jù)的工具以及用于操作內(nèi)存映射文件的工具?

線性代數(shù)、隨機(jī)數(shù)生成以及傅里葉變換功能

用于集成C/C++等代碼的工具

一、ndarry:一種多維數(shù)組對象

1、創(chuàng)建ndarry

#一維

In [5]: data = [1,2,3]

In [6]: import numpy as np

In [7]: arr1 = np.array(data)

In [8]: arr1

Out[8]: array([1, 2, 3])

#二維

In [11]: data2 = [[1,2,3],[4,5,6]]

In [12]: arr2 = np.array(data2)

In [13]: arr2

Out[13]:

array([[1, 2, 3],

[4, 5, 6]])

#查看數(shù)組的信息

In [15]: arr2.shape

Out[15]: (2, 3)

In [16]: arr2.dtype

Out[16]: dtype('int32')

數(shù)組創(chuàng)建函數(shù)

array()

arange(),類似Python內(nèi)置函數(shù)range(),但是range()返回的是列表

ones,zeros 創(chuàng)建一個全為1/0的數(shù)組,但是傳進(jìn)去的參數(shù)要是一個集合,例如np.ones((2,3))

ones_like,zeros_like 創(chuàng)建一個跟傳進(jìn)去數(shù)組形狀一樣的全1/0數(shù)組

empty,empty_like 創(chuàng)建空的數(shù)組,分配內(nèi)存,不存值

eye,identity 創(chuàng)建方陣

2.數(shù)組和標(biāo)量之間的運(yùn)算

In [36]: arr2

Out[36]:

array([[1, 2, 3],

[4, 5, 6]])

In [37]: arr3

Out[37]:

array([[11, 12, 13],

[14, 15, 16]])

#加

In [38]: arr2+arr3

Out[38]:

array([[12, 14, 16],

[18, 20, 22]])

#乘

In [39]: arr2*arr3

Out[39]:

array([[11, 24, 39],

[56, 75, 96]])

#減

In [40]: arr3-arr2

Out[40]:

array([[10, 10, 10],

[10, 10, 10]])

#除

In [41]: arr3/arr2

Out[41]:

array([[11. , 6. , 4.33333333],

[ 3.5 , 3. , 2.66666667]])

#平方

In [42]: arr2**2

Out[42]:

array([[ 1, 4, 9],

[16, 25, 36]], dtype=int32)

3.索引和切片

索引:

arr2d[0,0]或者是arr2d[0][0]

arr3d[0,0,0]或者是arr3d[0][0][0]

切片:有:標(biāo)記

arr2d[:2,:2]

arr3d[:2,:2]

先區(qū)分?jǐn)?shù)組和列表的操作

數(shù)組的切片是在原始數(shù)組上進(jìn)行的,而列表的切片操作則是進(jìn)行了數(shù)據(jù)的賦值

如果需要切片的是一份副本而不是源數(shù)組本身,需要arr[5:8].copy()

#列表的切片

>>> l1 = list(range(10))

>>> l1

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

>>> l2 = l1[5:8]

>>> l2

[5, 6, 7]

>>> l2[0]=15

>>> l2

[15, 6, 7]

>>> l1

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

#數(shù)組的切片

In [50]: arr = np.arange(10)

In [51]: arr

Out[51]: array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

In [52]: arr_slice = arr[5:8]

In [53]: arr_slice

Out[53]: array([5, 6, 7])

In [54]: arr_slice[0]=15

In [55]: arr_slice

Out[55]: array([15, 6, 7])

In [56]: arr

Out[56]: array([ 0, 1, 2, 3, 4, 15, 6, 7, 8, 9])

#二維數(shù)組的切片

In [95]: arr2d

Out[95]:

array([[1, 2, 3],

[4, 5, 6],

[7, 8, 9]])

In [96]: arr2d[:2]

Out[96]:

array([[1, 2, 3],

[4, 5, 6]])

一次可以傳入多個切片

In [97]: arr2d[:2,:1]

Out[97]:

array([[1],

[4]])

In [98]: arr2d[:2,:2]

Out[98]:

array([[1, 2],

#3維

In [83]: arr3d

Out[83]: [[[1, 2, 3], [4, 5, 6]], [[7, 8, 9], [10, 11, 12]]]

In [84]: arr3d[1]

Out[84]: [[7, 8, 9], [10, 11, 12]]

In [85]: arr3d[1][1]

Out[85]: [10, 11, 12]

In [86]: arr3d[1][1][1]

Out[86]: 11

In [87]: arr3d[1][1][2]

Out[87]: 12

布爾型索引

#[True,False,True]就相當(dāng)有是取第0/2行

In [121]: arr2d[[True,False,True]]

Out[121]:

array([[1, 2, 3],

[7, 8, 9]])

In [122]: arr2d[[True,False,True],2]

Out[122]: array([3, 9])

花式索引

#與上邊的博布爾型索引一樣,也是取第0/2行

In [132]: arr2d[[0,2]]

Out[132]:

array([[1, 2, 3],

[7, 8, 9]])

#花式索引注意以下問題

花式索引跟切片不同,總是將數(shù)據(jù)復(fù)制到新數(shù)組中,所以造成以下現(xiàn)象

In [136]: arr2d[[0,2],[0,2]]

Out[136]: array([1, 9])

In [137]: arr2d[[0,2]][:,[0,2]]

Out[137]:

array([[1, 3],

[7, 9]])

數(shù)組轉(zhuǎn)置和軸對換

轉(zhuǎn)置是重塑的一種特殊形式,它返回的是源數(shù)據(jù)的視圖,不會進(jìn)行復(fù)制操作。

In [142]: arr2d.T

Out[142]:

array([[1, 4, 7],

[2, 5, 8],

[3, 6, 9]])

4.對數(shù)組的元素進(jìn)行操作的函數(shù)

對單個數(shù)組元素的操作函數(shù)

abs 計算絕對值

sqrt 計算各元素的平方根

square 計算各元素的平方

exp 計算各元素的以e為底的指數(shù)

log/log10/log2/log1p log1p是log(1+x)

sign 計算各元素的正負(fù)號

ceil 計算大于等于該元素的最小整數(shù)

floor 計算小于等于該元素的最大整數(shù)

rint 將該元素四舍五入到最接近的整數(shù)

modf 返回該元素的小數(shù)和整數(shù)部分,以兩個獨(dú)立數(shù)組的形式

isnan is not a number 判斷各元素是否是數(shù)字

isfinite isinf 判斷各元素有窮無窮

cos/sin/tan

arccos/acccosh/arcsin

對兩個數(shù)組元素操作的函數(shù)

add 將數(shù)組中元素相加

subtract 第一個數(shù)組中元素減去第二個數(shù)組中元素

multiply 數(shù)組對應(yīng)元素相乘

divide floor_divide 除法、丟棄余數(shù)的除法

power(a,b) 將a中元素計算b中對應(yīng)元素 a的b次方

mod 求除法的余數(shù)

copysign 將第二個數(shù)組中的元素符號賦值給第一個數(shù)組中的值

< >= <= == != 比較對應(yīng)元素的值

logical_and/logical_or/logical_xor

5.一些可以用數(shù)組來處理的運(yùn)算

矢量化方便運(yùn)算

三元運(yùn)算

In [6]: xarr = np.array([1.1,1.2,1.3,1.4,1.5])

In [7]: yarr = np.array([2.1,2.2,2.3,2.4,2.5])

In [8]: cond = np.array([True,False,True,True,False])

In [9]: result = [x if c else y for x ,c ,y in zip(xarr,yarr,cond)]

In [10]: result

Out[10]: [1.1, 1.2, 1.3, 1.4, 1.5]

np.where通常用于根據(jù)一個數(shù)組生成另外一個數(shù)組

In [11]: result2 = np.where(cond,xarr,yarr)

In [12]: result2

Out[12]: array([1.1, 2.2, 1.3, 1.4, 2.5])

數(shù)學(xué)和統(tǒng)計方法

這些方法既可以當(dāng)做實(shí)例方法調(diào)用arr2d.sum()也可以通過np.sum(arr2d)

sum 計算所有元素的和

mean 計算所有元素的均值

std/var 計算標(biāo)準(zhǔn)差和方差

min/max 最大值和最小值

argmin/argmax 最小值和最大值的索引

cumsum 返回一個所有元素累加的數(shù)組 累計和

cumprod 所有元素的累計積

用于布爾型數(shù)組的方法

#True直接當(dāng)1計算

In [24]: (arr2d<4).sum()

Out[24]: 3

In [25]: cond

Out[25]: array([ True, False, True, True, False])

In [26]: cond.any()

Out[26]: True

In [27]: cond.all()

Out[27]: False

排序

np.sort() 這個會復(fù)制一個副本

arr2d.sort()是在源數(shù)據(jù)上的操作

6.用于數(shù)組文件的輸入輸出

將數(shù)組以二進(jìn)制形式保存到磁盤

np.save()

np.load()

存取文本文件

np.loadtext()

np.savetext()

7.線性代數(shù) 找不到時就在numpy.linalg

注:轉(zhuǎn)置 arr.T

np.dot(arr1,arr2) 兩個矩陣的乘積

np.diag 返回對角線元素/或以一維數(shù)組轉(zhuǎn)化為以此為對角線的方陣

trace() 計算對角線的和

det 計算f方陣的行列式值

eig 計算特征值和特征向量

inv 計算逆矩陣

pinv 計算偽逆矩陣

qr 計算QR分解

svd 計算奇異值分解

solve 解線性方程Ax=b

lstsq 計算Ax=b的最小二乘解

8.隨機(jī)數(shù)生成 numpy.random對Python內(nèi)置的random進(jìn)行了補(bǔ)充

seed 確定隨機(jī)數(shù)生成的種子

permutation 返回一個序列的隨機(jī)排列或返回一個隨機(jī)排列的范圍

shuffle 對一個序列就地隨機(jī)排列

rand 產(chǎn)生均勻分布的樣本值

randint 從給定的上下范圍內(nèi)隨機(jī)選取整數(shù)

randn 產(chǎn)生正態(tài)分布的樣本值

binomial 產(chǎn)生二項(xiàng)分布的樣本值

normal 產(chǎn)生二項(xiàng)分布的樣本值

beta 產(chǎn)生Beta分布的樣本值

chisquare 產(chǎn)生卡方分布的樣本值

gamma 產(chǎn)生Gamma分布的樣本值

uniform 產(chǎn)生(0,1)均勻分布的樣本值

總結(jié)

以上是生活随笔為你收集整理的python输入数组并计算_利用Python进行数据分析——Numpy基础:数组和矢量计算的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。