我有一個作業,我必須將串列中的一個名字映射到陣列中的一個特定的整數(希望我用的術語正確)。我寫了這段代碼,但它沒有作業。為什么會這樣,我怎樣才能讓它作業呢?
list_1 = ['sentosa', 'versicolor', 'virginica', 'virginica', 'sendosa']
beta = np.array([])
for x in list_1:
if x == "sentosa"/span>:
np.append(beta, [1], axis = 0)
elif x == "versicolor":
np.append(beta, [2], axis = 0)
elif x == "virginica" :
np.append(beta, [3], axis = 0)
uj5u.com熱心網友回復:
NumPy陣列有一個固定的大小,它們并不是真正可追加的。 即使你修復了這些錯誤,你所做的也會很慢。 使用一個普通的串列,如果有必要的話,在最后將其轉換為一個NumPy陣列。
uj5u.com熱心網友回復:
如何修正你的代碼
numpy.append沒有到位,所以你需要把輸出的內容分配回來:
list_1 = ['sentosa', 'versicolor', 'virginica', 'virginica', 'sendosa']
beta = np.array([])
for x in list_1:
if x == "sentosa"/span>:
beta = np.append(beta, [1], axis = 0)
elif x == "versicolor":
beta = np.append(beta, [2], axis = 0)
elif x == "virginica"/span>:
beta = np.append(beta, [3], axis = 0)
如何有效地做你想做的事
你可以使用numpy.unique與return_inverse=True選項來分解你的資料:
numpy.unique(list_1, return_inverse=True) [1] 1
輸出。array([1, 2, 3, 3, 1])
uj5u.com熱心網友回復:
為了將字串串列映射為唯一的整數,首先要找到唯一的字串,然后在原始的字串串列中對字串進行1-1映射。
list_1 = ['sentosa', 'versicolor', 'virginica', 'virginica', 'Sentosa']
#創建唯一的名字串列。
unique_list = set(list_1) # Unique list {'sentosa', 'versicolor', 'virginica'}
# 創建從名字到整數(id)的映射
string_to_integer = {name: idx 1 for idx, name in enumerate(unique_list) }
# map initial list of names to ids.
k = [string_to_integer [name] for name in list_1 ]
輸出:
3, 2, 1, 1, 3。
另一種可能的方式 -
list_1 = ['sentosa', 'versicolor', 'virginica', 'virginica', 'sendosa']
mydict={}
i = 0
for item in list_1:
if(i>0 and item in mydict) 。
繼續 繼續
else:
i = i 1.
mydict[item] = i
k=[]
for item in list_1:
k.append(mydict[item])
1, 2, 3, 3, 1.
然后轉移到numpy陣列
arr = numpy.asarray(k)
我希望這將有助于你完成你的任務。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/326879.html
標籤:
上一篇:Numpy-相同D型別陣列比較-折舊警告。Elemetwise比較失敗
下一篇:通過當前表單實體傳遞給另一個類
