numpy 列表篩選及解方程式

2022-08-23 16:45:08 字數 2831 閱讀 9519

當對array陣列進行計算時,有時候需要篩選出題目所要求的資料,篩選物件可能是數字,也可能是字串。這次我就來說說如何針對字串進行篩選。

當有乙個列表[['男', '2', '4', '40'], ["女",21,13,50],['男', '8', '6', '24']],要求解「男」方程式,也就是我們需要將含有字串「男」的列表資料調出來,即將含有字串「女」的列表刪去。這一步我們需要用到函式np.delete()。

很容易就能想到如下方法:

bbb=np.array([['

男', '

2', '

4', '

40'], ["

女",21,13,50],['

男', '

8', '

6', '24'

]])x,y=np.shape(bbb)

for i in

range(x):

if bbb[0,i]!="男":

bbb=np.delete(bbb,i,axis=0)

執行後發現程式並沒有如我們所想刪去「女」資料列,在**中插入print()來測試是**執行不成功:

bbb=np.array([['

男', '

2', '

4', '

40'], ["

女",21,13,50],['

男', '

8', '

6', '24'

]])x,y=np.shape(bbb)

for i in

range(x):

print

(i)

if bbb[0,i]!="男":

print("

yes"

)

bbb=np.delete(bbb,i,axis=0)
執行結果為:0 1 2,即判斷每一列第乙個資料是否為「男」處不能成功判斷。將bbb[i][0]改為bbb發現程式報錯,但當單獨判斷時程式可以判斷成功:

aaa=bbb=="女"

我覺得可能是array陣列對資料的誤判,我將array轉換成list後解決了該問題,成功篩選出"男"資料列:

aaa=bbb=="女"

aaa=aaa.tolist()

for i in

range(x):

print

(i)

if aaa[i][0]!=false:

print("

yes"

) bbb=np.delete(bbb,i,axis=0)

執行後程式正確輸出yes

輸出bbb顯示結果為:

接下來就是進行方程式的運算,前兩個數為x,y的係數,最後乙個數為常數,將資料單獨取出來並進行運算:

b=np.array(bbb[:,3:4])

a=np.array(bbb[:,1:3])

result=linalg.solve(a,b)

執行後發現程式報錯,輸出bbb發現資料型別為「

b=np.array(bbb[:,3:4],dtype="

int32")

a=np.array(bbb[:,1:3],dtype="

int32")

linalg.solve(a,b)

程式成功執行並得到正確結果:

但是這種方法有個缺陷,即列表中沒有「男」資料或只有乙個資料列時,程式會報錯。

此時我們需要定義乙個數得到bbb的shape的長度:

c=np.shape(bbb)

cc=len(c)

在給x,y賦值np.shape(bbb)前加入如上**,判斷cc長度為2,1或0,當判斷為2時,執行之前的**;為1則只給x賦值;為0直接返回空陣列。**如下:

bbb=np.array([['

男', '

2', '

4', '

40'], ["

女",21,13,50],['

男', '

8', '

6', '24'

]])result=

c=np.shape(bbb)

cc=len(c)

if cc==2:

x,y=np.shape(bbb)

for i in

range(x):

print

(i)

if bbb[0,i]!="男"

:

print("

yes"

) bbb=np.delete(bbb,i,axis=0)

d=np.shape(bbb)

dd=len(d)

if dd==2:

b=np.array(bbb[:,3:4],dtype="

int32")

a=np.array(bbb[:,1:3],dtype="

int32")

result=linalg.solve(a,b)

else

:

return result=

else

:

return result=

執行結果正確,到這裡我們就完成了資料的篩選即方程式的運算。

篩選分類列表展示

接著昨天未完成的部分,下面接著實現,當篩選之後下面對應出現相關型別的內容。話不多說,先上效果圖。資料庫設計 文章表的sortid欄位關聯分類表的id,type id關聯type表字段。填充資料大致如下,如果不清楚sortid,和type id請移步至昨天我的另一篇部落格 php實現類似慕課網,php...

Numpy攻略 用埃氏篩篩選

埃氏篩 篩選質數的一種演算法,用迭代的方式識別出已經找到的質數的倍數,能高效地篩選出小於一千萬的質數。讓我們去試著尋找10001個質數。具體步驟如下 1.建立乙個連續的整數列表 用arange函式 2.篩選出p的倍數 完整 如下圖 import numpy lim 10 6 n 10 9 p 100...

numpy匯入資料集無法對列分割問題及解決方法

三 參考資料 在對cm1資料集 用於defect prediction 預處理的時候,加上label一共是38個特徵,前37個是數字,label是,載入資料集後例項以元組儲存在陣列中,無法通過切片獲取前37個特徵。載入資料集的 如下 import numpy as np from math impo...