當對array陣列進行計算時,有時候需要篩選出題目所要求的資料,篩選物件可能是數字,也可能是字串。這次我就來說說如何針對字串進行篩選。
當有乙個列表[['男', '2', '4', '40'], ["女",21,13,50],['男', '8', '6', '24']],要求解「男」方程式,也就是我們需要將含有字串「男」的列表資料調出來,即將含有字串「女」的列表刪去。這一步我們需要用到函式np.delete()。
很容易就能想到如下方法:
bbb=np.array([['執行後發現程式並沒有如我們所想刪去「女」資料列,在**中插入print()來測試是**執行不成功:男', '
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)
bbb=np.array([['男', '
2', '
4', '
40'], ["
女",21,13,50],['
男', '
8', '
6', '24'
]])x,y=np.shape(bbb)
for i in
range(x):
(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=="女"執行後程式正確輸出yesaaa=aaa.tolist()
for i in
range(x):
(i)
if aaa[i][0]!=false:
print("
yes"
) bbb=np.delete(bbb,i,axis=0)
輸出bbb顯示結果為:
接下來就是進行方程式的運算,前兩個數為x,y的係數,最後乙個數為常數,將資料單獨取出來並進行運算:
b=np.array(bbb[:,3:4])執行後發現程式報錯,輸出bbb發現資料型別為「a=np.array(bbb[:,1:3])
result=linalg.solve(a,b)
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)在給x,y賦值np.shape(bbb)前加入如上**,判斷cc長度為2,1或0,當判斷為2時,執行之前的**;為1則只給x賦值;為0直接返回空陣列。**如下:cc=len(c)
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):
(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...