np.where和带字符串的列表的问题



我有3个列表,其中一个是:

x_axis = ["01-01", "01-02", "01-03"] 

等等。x_axis列表的长度为377。

我还有一个清单:

y_axis = ["01-01","01-03","01-05"]

等等。y_list的长度为167。

第三个列表对应具有特定编号的列表x_axis,其中:

hour24 = ["50","0","99"]

等等。hour24的长度与x_axis相同,其中x_axis中的日期与hour24中的数字相对应。

我想做的是从hour24列表中提取与y_axis中的日期相对应的数字。这意味着并非所有日期都将被包括在内。我想要一个new_hour24列表,其中包含与y轴中的日期相同的特定数字。这里的问题是,x_axis列表包括所有日期,而y_axis列表只包括一些选定的日期。

我想做的事:

我试图用零扩展y_axis列表,使其包含与x_axis相同的长度:

for i in range(210):
y_axis.append("0")

一旦我有了相同的长度,我就尝试使用if/else和np.where numpy作为:

new_hour24 = []
for i in range(0, len(x_axis)):
if(np.where((x_axis[i]==y_axis[i]))):
new_hour24.append(hour24[i])
else:
continue

然而,由于某种原因,这是不起作用的,我的新列表new_hour24包含了所有的原始值,就像它跳过了np.where事实并只是附加了所有的值一样。

有人知道我该怎么解决吗?

编辑

预期输出是长度为167的new_hour24列表。列表new_hour24中的数字对应于y_list中的日期。

您可以在中使用np.isin

new_hour24 = hour24[np.isin(x_axis, y_axis)]
print(new_hour24)

输出:

['50' '99']

最新更新