[英]How to use nested for loops in python?
我正在嘗試根據 Python 中另一個數據幀的值創建一個數組。 我希望它像這樣填充數組。
If x > or = 3 in the dataframe then it inputs a 0 in the array.
If x < 3 in the dataframe then it inputs a 1 in the array.
If x = 0 in the dataframe then it inputs a 0 in the array.
下面是我到目前為止的代碼,但結果只是 [0]
array = np.array([])
for x in df["disc"]:
for y in array:
if x >= 3:
y=0
elif x < 3:
y=1
else:
y=0
任何幫助將不勝感激,謝謝。
使用 numpy arrays 時,如果完全避免在 Python 中使用顯式循環,效率會更高。 (實際的循環發生在編譯的 C 代碼中。)
disc = df["disc"]
# make an array containing 0 where disc >= 3, elsewhere 1
array = np.where(disc >= 3, 0, 1)
# now set it equal to 0 in any places where disc == 0
array[disc == 0] = 0
它也可以在單個語句中完成(除了disc
的初始分配),使用:
array = np.where((disc >= 3) | (disc == 0), 0, 1)
這里|
對 boolean arrays 進行逐個元素的“或”測試。 (它比比較運算符具有更高的優先級,因此需要在比較周圍加上括號。)
這是一個簡單的問題。 有很多方法可以解決這個問題,我認為最簡單的方法是使用列表。 您可以根據條件使用列表和 append 值。
array = []
for x in df["disc"]:
if x >= 3:
array.append(0)
elif x < 3:
array.append(1)
else:
array.append(0)
您的代碼似乎沒有對數組做任何事情,因為您正在嘗試修改變量y
,而不是數組本身。 y
不引用數組,它只保存找到的值。 由於數組為空,第二個循環也沒有做任何事情——它循環了 0 個元素。 您需要的而不是另一個for
循環是將 append 簡單地添加到數組中。
使用列表,您可以使用.append()
方法添加元素,但是由於您似乎使用的是 numpy,因此您需要使用它提供的append(arr, values)
function,如下所示:
array = np.array([])
for x in df["disc"]:
if x >= 3:
array = np.append(array, 0)
elif x < 3:
array = np.append(array, 1)
else:
array = np.append(array, 0)
我還要注意,這些條件可以簡化為組合 append a 0
的兩個分支。 即如果x < 3且x不為0,則加1,否則加0。因此,代碼可以重寫如下。
array = np.array([])
for x in df["disc"]:
if x < 3 and x != 0:
array = np.append(array, 1)
else:
array = np.append(array, 0)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.