當前位置:首頁 » 編程語言 » python中shape0

python中shape0

發布時間: 2023-09-07 17:37:13

python基礎 numpy中的常見函數有哪些

有些Python小白對numpy中的常見函數不太了解,今天小編就整理出來分享給大家。

Numpy是Python的一個科學計算的庫,提供了矩陣運算的功能,其一般與Scipy、matplotlib一起使用。其實,list已經提供了類似於矩陣的表示形式,不過numpy為我們提供了更多的函數。

數組常用函數
1.where()按條件返回數組的索引值
2.take(a,index)從數組a中按照索引index取值
3.linspace(a,b,N)返回一個在(a,b)范圍內均勻分布的數組,元素個數為N個
4.a.fill()將數組的所有元素以指定的值填充
5.diff(a)返回數組a相鄰元素的差值構成的數組
6.sign(a)返回數組a的每個元素的正負符號
7.piecewise(a,[condlist],[funclist])數組a根據布爾型條件condlist返回對應元素結果
8.a.argmax(),a.argmin()返回a最大、最小元素的索引

改變數組維度
a.ravel(),a.flatten():將數組a展平成一維數組
a.shape=(m,n),a.reshape(m,n):將數組a轉換成m*n維數組
a.transpose,a.T轉置數組a

數組組合
1.hstack((a,b)),concatenate((a,b),axis=1)將數組a,b沿水平方向組合
2.vstack((a,b)),concatenate((a,b),axis=0)將數組a,b沿豎直方向組合
3.row_stack((a,b))將數組a,b按行方向組合
4.column_stack((a,b))將數組a,b按列方向組合

數組分割
1.split(a,n,axis=0),vsplit(a,n)將數組a沿垂直方向分割成n個數組
2.split(a,n,axis=1),hsplit(a,n)將數組a沿水平方向分割成n個數組

數組修剪和壓縮
1.a.clip(m,n)設置數組a的范圍為(m,n),數組中大於n的元素設定為n,小於m的元素設定為m
2.a.compress()返回根據給定條件篩選後的數組

數組屬性
1.a.dtype數組a的數據類型
2.a.shape數組a的維度
3.a.ndim數組a的維數
4.a.size數組a所含元素的總個數
5.a.itemsize數組a的元素在內存中所佔的位元組數
6.a.nbytes整個數組a所佔的內存空間7.a.astype(int)轉換a數組的類型為int型

數組計算
1.average(a,weights=v)對數組a以權重v進行加權平均
2.mean(a),max(a),min(a),middle(a),var(a),std(a)數組a的均值、最大值、最小值、中位數、方差、標准差
3.a.prod()數組a的所有元素的乘積
4.a.cumprod()數組a的元素的累積乘積
5.cov(a,b),corrcoef(a,b)數組a和b的協方差、相關系數
6.a.diagonal()查看矩陣a對角線上的元素7.a.trace()計算矩陣a的跡,即對角線元素之和

以上就是numpy中的常見函數。更多Python學習推薦:PyThon學習網教學中心。

❷ Python中怎樣使用shape計算矩陣的行和列

你得先安裝numpy庫,矩陣(ndarray)的shape屬性可以獲取矩陣的形狀(例如二維數組的行列),獲取的結果是一個元組,因此相關代碼如下:

importnumpyasnp
x=np.array([[1,2,5],[2,3,5],[3,4,5],[2,3,6]])
#輸出數組的行和列數
printx.shape#(4,3)
#只輸出行數
printx.shape[0]#4
#只輸出列數
printx.shape[1]#3

❸ python 代碼 問題img.shape[0:2]

[0:2]這個應當是切片的意思
img.shape 應當是OpenCV模塊中處理圖片的 是圖片的一個屬性 ,這個屬性是個列表 然後對這個列表切片操作

❹ Python小問題

出現這個問題是因為索引出現了浮點數,不是索引允許的數據類型,可以驗證一下

importnumpyasnp
y=np.zeros(shape=(1,5))
arr=[nforninnp.linspace(1,5,5)]

arr里存儲的就是源代碼中會用的索引,下圖是結果

importnumpyasnp
y=np.zeros(shape=(1,5))

forninnp.int16(np.linspace(1,5,5)):
y[0,n-1]=n**2
print(y)

❺ python自帶及pandas、numpy數據結構(一)

1.python自帶數據結構:序列(如list)、映射(如字典)、集合(set)。
以下只介紹序列中的list:
創建list:
list1 = []
list1 = [1,2,3,4,5,6,7,8,9] #逗號隔開
list2 = [[1,2],[3,4],[5,6],[7,8]] #list2長度(len(list2))為2,list2[0] = [1,2]
liststring = list(「thisisalist」) #只用於創建字元串列表
索引list:
e = list1[0] #下標從零開始,用中括弧
分片list:
es = list1[0:3]
es = list1[0:9:2] #步長在第二個冒號後
list拼接(list1.append(obj)、加運算及乘運算):

list長度:

list每個元素乘一個數值:
list2 = numpy.dot(list2,2)
list類似矩陣相乘(每個元素對應相乘取和):
list3 = numpy.dot(list1,list1)
#要求相乘的兩個list長度相同
list3 = numpy.dot(list2,list22)
#要求numpy.shape(list2)和numpy.shape(list22)滿足「左行等於右列」的矩陣相乘條件,相乘結果numpy.shape(list3)滿足「左列右行」

2.numpy數據結構:

Array:
產生array:
data=np.array([[1, 9, 6], [2, 8, 5], [3, 7, 4]])
data=np.array(list1)
data1 = np.zeros(5) #data1.shape = (5,),5列
data1 = np.eye(5)
索引array:
datacut = data[0,2] #取第零行第二列,此處是6
切片array:
datacut = data[0:2,2] # array([6, 5])
array長度:
data.shape
data.size
np.shape(data)
np.size(data)
len(data)
array拼接:
#括弧內也有一個括弧(中括弧或者小括弧)!
d = np.concatenate((data,data))
d = np.concatenate((data,data),axis = 1) #對應行拼接
array加法:逐個相加
array乘法:
d = data data #逐個相乘
d = np.dot(data,data) #矩陣相乘
d = data
3 #每個元素乘3
d = np.dot(data,3) #每個元素乘3
array矩陣運算:
取逆 : np.linalg.inv(data)
轉置:data.T
所有元素求和 : np.sum(data)
生成隨機數:np.random.normal(loc=0, scale=10, size=None)
生成標准正態分布隨機數組:np.random.normal(size=(4,4))
生成二維隨機數組:
np.random.multivariate_normal([0,0],np.eye(2))
生成范圍在0到1之間的隨機矩陣(M,N):
np.random.randint(0,2,(M,N))

Matrix:
創建matrix:
mat1 = np.mat([[1, 2, 3], [4, 5, 6]])
mat1 = np.mat(list)
mat1 = np.mat(data)
matrix是二維的,所有+,-,*都是矩陣操作。
matrix索引和分列:
mat1[0:2,1]
matrix轉置:
np.transpose(mat1)
mat1.transpose()
matrix拼接:
np.concatenate([mat1,mat1])
np.concatenate([mat1,mat1],axis = 1)

numpy數據結構總結:對於numpy中的數據結構的操作方法基本相同:
創建:np.mat(list),np.array(list)
矩陣乘:np.dot(x,y)
轉置:x.T or np.transpose(x)
拼接:np.concatenate([x,y],axis = 1)
索引:mat[0:1,4],ary[0:1,4]

3.pandas數據結構:
Series:
創建series:
s = pd.Series([[1,2,3],[4,5,6]],index = [『a』,『b』])
索引series:
s1 = s[『b』]
拼接series:
pd.concat([s1,s1],axis = 1) #也可使用s.append(s)

DataFrame:
創建DaraFrame:
df = pd.DataFrame([[1,2,3],[1,2,3]],index = ['a','b'],columns = ['x','y','z'])
df取某一列:
dfc1 =df.x
dfc1 = df[『x』]
dfc2 = df.iloc[:,0] #用.iloc方括弧里是數字而不是column名!
dfc2 = df.iloc[:,0:3]
df取某一行:
dfr1 = df.iloc[0]
df1 = df.iloc[0:2]
df1 = df[0:2] #這種方法只能用於取一個區間
df取某個值:
dfc2 = df.iloc[0,0]
dfc2 = df.iloc[0:2,0:3]

❻ 圖像雙三次插值演算法原理及python實現

一. 圖像雙三次插值演算法原理:

        假設源圖像 A 大小為 m*n ,縮放後的目標圖像 B 的大小為 M*N 。那麼根據比例我們可以得到 B(X,Y) 在 A 上的對應坐標為 A(x,y) = A( X*(m/M), Y*(n/N) ) 。在雙線性插值法中,我們選取 A(x,y) 的最近四個點。而在雙立方插值法中,我們選取的是最近的16個像素點作為計算目標圖像 B(X,Y) 處像素值的參數。如圖所示:

        如圖所示 P 點就是目標圖像 B 在 (X,Y) 處對應於源圖像中的位置,P 的坐標位置會出現小數部分,所以我們假設 P 的坐標為 P(x+u,y+v),其中 x,y 分別表示整數部分,u,v 分別表示小數部分。那麼我們就可以得到如圖所示的最近 16 個像素的位置,在這里用 a(i,j)(i,j=0,1,2,3) 來表示。 

        雙立方插值的目的就是通過找到一種關系,或者說系數,可以把這 16 個像素對於 P 處像素值的影響因子找出來,從而根據這個影響因子來獲得目標圖像對應點的像素值,達到圖像縮放的目的。 

        BiCubic基函數形式如下:

二. python實現雙三次插值演算法

from PIL import Image

import numpy as np

import math

# 產生16個像素點不同的權重

def BiBubic(x):

    x=abs(x)

    if x<=1:

        return 1-2*(x**2)+(x**3)

    elif x<2:

        return 4-8*x+5*(x**2)-(x**3)

    else:

        return 0

# 雙三次插值演算法

# dstH為目標圖像的高,dstW為目標圖像的寬

def BiCubic_interpolation(img,dstH,dstW):

    scrH,scrW,_=img.shape

    #img=np.pad(img,((1,3),(1,3),(0,0)),'constant')

    retimg=np.zeros((dstH,dstW,3),dtype=np.uint8)

    for i in range(dstH):

        for j in range(dstW):

            scrx=i*(scrH/dstH)

            scry=j*(scrW/dstW)

            x=math.floor(scrx)

            y=math.floor(scry)

            u=scrx-x

            v=scry-y

            tmp=0

            for ii in range(-1,2):

                for jj in range(-1,2):

                    if x+ii<0 or y+jj<0 or x+ii>=scrH or y+jj>=scrW:

                        continue

                    tmp+=img[x+ii,y+jj]*BiBubic(ii-u)*BiBubic(jj-v)

            retimg[i,j]=np.clip(tmp,0,255)

    return retimg

im_path='../paojie.jpg'

image=np.array(Image.open(im_path))

image2=BiCubic_interpolation(image,image.shape[0]*2,image.shape[1]*2)

image2=Image.fromarray(image2.astype('uint8')).convert('RGB')

image2.save('BiCubic_interpolation.jpg')

三. 實驗結果:

四. 參考內容:

         https://www.cnblogs.com/wojianxin/p/12516762.html

         https://blog.csdn.net/Ibelievesunshine/article/details/104942406

❼ python數據分析2:DataFrame對象

DataFrame對象:二維表數據結構,由行列數據組成的表格

常用index表示行,columns表示列

'''

  語文  數學  英語

0  110  105    99

1  105    88  115

2  109  120  130

'''

# print(df.columns)  # Index(['語文', '數學', '英語'], dtype='object')

# print(df.index)  # Int64Index([0, 1, 2], dtype='int64')

# 遍歷DataFrame數據的每一列

'''

0    110

1    105

2    109

Name: 語文, dtype: int64

0    105

1    88

2    120

Name: 數學, dtype: int64

0    99

1    115

2    130

Name: 英語, dtype: int64

'''

1.創建一個DataFrame對象

pandas.DataFrame(data,index,columns,dtype,)

# data表示數據,可以是ndarray數組,series對象、列表、字典等

# index表示行標簽(索引)

# columns表示列標簽(索引)

# dtype每一列數據的數據類型

# 用於復制數據

# 返回值DataFrame

通過二維數組創建成績表

'''

  語文  數學  英語

0  110  105    99

1  105    88  115

2  109  120  130

'''

2.通過字典創建DataFrame對象

value值只能是一維數組或單個的簡單數據類型

# 數組,則要求所有的數組長度一致

# 單個數據,每行都需要添加相同數據

'''

  語文  數學  英語    班級

0  110  105  109  高一7班

1  105    88  120  高一7班

2    99  115  130  高一7班

'''

'''

【DataFrame屬性】

values 查看所有元素的值  df.values

dtypes 查看所有元素的類型  df.dtypes

index 查看所有行名、重命名行名  df.index    df.index=[1,2,3]

columns 查看所有列名、重命名列名  df.columns  df.columns=['語','數']

T 行列數據轉換  df.T

head 查看前n條數據,默認5條                df.head()  df.head(10)

tail 查看後n條數據,默認5條                df.tail()  df.tail(10)

shape 查看行數和列數,[0]表示行,[1]表示列    df.shape[0]  df.shape[1]

info 查看索引,數據類型和內存信息    df.info

【DataFrame函數】

describe 查看每列的統計匯總信息,DataFrame類型  df.describe()

count    返回每一列中的非空值的個數              df.count()

sum      返回每一列和和,無法計算返回空值      df.sum()

max      返回每一列的最大值                df.max()

min      返回每一列的最小值                df.min()

argmax  返回最大值所在的自動索引位置        df.argmax()

argmin  返回最小值所在的自動索引位置        df.argmin()

idxmax  返回最大值所在的自定義索引位置      df.idxmax()

idxmin  返回最小值所在的自定義索引位置      df.idxmin()

mean    返回每一列的平均值                df.mean()

median  返回每一列的中位數                df.median()

var      返回每一列的方差                  df.var()

std      返回每一列的標准差  df.std()

isnull  檢查df中的空值,空值為True,否則為False,返回布爾型數組  df.isnull()

notnull  檢查df中的空值,非空值為True,否則為False,返回布爾型數組  df.notnull()

中位數又稱中值,是指按順序排列的一組數據中居於中間位置的數

方差用於度量單個隨機變數的離散程序(不連續程度)

標准差是方差的算術平方根,反映數據集的離散程度

'''

3. 導入.xls或.xlsx文件

# pandas.read_excel(io,sheetname=0,header=0,names=None,index_col=None,usecols=None,squeeze=False,dtype=None,engine=None,converters=None,true_values=None,false_values=None,skiprows=None,nrow=None,na_values=None,keep_defalut_na=True,verbose=False,parse_dates=False,date_parser=None,thousands=None,comment=None,skipfooter=0,conver_float=True,mangle_pe_cols=True,**kwds)

'''

io 字元串,xls或xlsx文件路徑或類文件對象

sheet_name:None、字元串、整數、字元串列表或整數列表,默認值為0

    字元串用於工作表名稱;整數為索引,表示工作表位置

    字元串列表或整數列表用於請求多個工作表,為None時則獲取所有的工作表

    sheet_name = 0 第一個Sheet頁中的數據作為DataFrame對象

    sheet_name = 1 第二個Sheet頁中的數據作為DataFrame對象

    sheet_name = 'Sheet1' 名為Sheet1的Sheet頁中的數據作為DataFrame對象

    sheet_name = [0,1,'Sheet3'] 第一個,第二個和名為Sheet3的Sheet頁中的數據作為DataFrame對象

header:指定作為列名的行,默認值為0,即取第一行的值為列名。或數據不包含列名,則為header=None

names:默認值為None,要使用的列名列表

index_col:指定列為索引列,默認值為None,索引0是DataFrame對象的行標簽

usecols:int、list或字元串,默認值為None

    如為None,則解析所有列

    如為int,則解析最後一列

    如為list列表,則解析列號和列表的列

    如為字元串,則表示以逗號分隔的Excel列字母和列范圍列表

squeeze:布爾值,默認為False,如果解析的數據只包含一列,則返回一個Series

dtype:列的數據類型名稱為字典,默認值為None

skiprows:省略指定行數的數據,從第一行開始

skipfooter:省略指定行數的數據,從尾部數的行開始

4.導入指定Sheet頁的數據

# sheet_name=0表示第一個sheet頁的數據,以此類推,如果不指定,則導入第一頁

5.指定行索引導入Excel數據

'''

Empty DataFrame

Columns: []

Index: [1, 3, 5]

'''

# 導入第一列數據

'''

Empty DataFrame

Columns: []

Index: [1, 3, 5]

'''

熱點內容
滑板鞋腳本視頻 發布:2025-02-02 09:48:54 瀏覽:432
群暉怎麼玩安卓模擬器 發布:2025-02-02 09:45:23 瀏覽:557
三星安卓12彩蛋怎麼玩 發布:2025-02-02 09:44:39 瀏覽:743
電腦顯示連接伺服器錯誤 發布:2025-02-02 09:24:10 瀏覽:537
瑞芯微開發板編譯 發布:2025-02-02 09:22:54 瀏覽:146
linux虛擬機用gcc編譯時顯示錯誤 發布:2025-02-02 09:14:01 瀏覽:236
java駝峰 發布:2025-02-02 09:13:26 瀏覽:652
魔獸腳本怎麼用 發布:2025-02-02 09:10:28 瀏覽:538
linuxadobe 發布:2025-02-02 09:09:43 瀏覽:212
sql2000資料庫連接 發布:2025-02-02 09:09:43 瀏覽:726