[英]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.