我有一个名为' label'的空列表,其中根据哪个存储桶更合适,它会填充标签'列表0,1或2.
'标签'与3'桶相关联:
# Bucket 0: 0 -7 Days --------------------------> 0
# Bucket 1: 1 - 6 Weeks (8 - 42 Days) ----------> 1
# Bucket 2: 7+ Weeks (49+ Days) ----------------> 2
我有另一个列表的长度为23411.此列表的内容包括0天到1099天。因此,根据此列表的内容,它应填充“#”标签'名单。
我试过这个for-loop
& if-else
声明要做我想要的事情,但它给了我一个IndexError: list assignment index out of range
:
label = []
for i in range(23411):
if ageNew[i] <= 7:
label[i] = 0
elif ageNew[i] <= 42:
label[i] = 1
else:
label[i] = 2
例如:
list: [0, 8, 14, 14, 45, 1056, 1]
label: [0, 1, 1, 1, 2, 2, 0]
答案 0 :(得分:1)
您无法进行作业label[i] = something
,因为它不存在。
请改用.append()
label = []
for i in range(23411):
if ageNew[i] <= 7:
res = 0
elif ageNew[i] <= 42:
res = 1
else:
res = 2
label.append(res)
答案 1 :(得分:1)
您的列表为空,因此[i]
将无法按预期方式运行,因为该索引不存在。怎么样:
label = []
for i in range(23411):
val = None
if ageNew[i] <= 7:
val = 0
elif ageNew[i] <= 42:
val = 1
else:
val = 2
label.append(val)
这应该有用。
答案 2 :(得分:0)
试试这个:
label = []
for i in lists:
if i <= 7:
label.append(0)
elif i >= 8 and i <= 42:
label.append(1)
else:
label.append(2)
#output
[0, 1, 1, 1, 2, 2, 2, 0]
标签
答案 3 :(得分:0)
以防您真正想要numpy
:
import numpy as np
x=np.array((12,32,54,1,2,43,4))
res=np.zeros(x.shape)
res[x<=3] = 0
res[np.logical_and(x>3,x<=10)] = 1
res[x>10] = 2
print(res)
array([ 2., 2., 2., 0., 0., 2., 1.])
您可以使用以下命令将列表转换为numpy
数组:
x=np.array(your_list)
答案 4 :(得分:0)
您可以将np.where
与numpy数组一起使用。以你的例子:
i = np.arange(23411)
label = np.where(i<=7, 0, np.where(i<=42, 1, 2))