删除数组结果中不必要的信息

remove uneccesary info in array outcome

任何人都可以启发为什么基于以下命令的结果不是预期的?

预期输出: [1 6] ---> print(a) 应该 return 在数组中只显示值的位置

a = []

data = ['2007-01-03', '2007-01-04', '2007-01-05', '2007-01-08', '2007-01-09'
        , '2007-01-10', '2007-01-11', '2007-01-12', '2007-01-16']
data1 = ['2007-01-04', '2007-01-11']

data = np.array(data)
data1 = np.array(data1)

for idx, day in enumerate(data1):
    a.append(np.where(day == data))

print(a)

如果您想使用自己的代码,我可以说: 你有列表列表,你可以试试这个:

a.append(np.where(day == data)[0][0])

但您可以将 numpy.array 转换为 list 并使用 index,如下所示:

print([data.tolist().index(day) for day in data1])

numpy 很慢你可以在下面看到 listnumpy 的运行时间:

%timeit ([data.tolist().index(day) for day in data1])
# 3.58 µs ± 123 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)
%timeit  for day in data1: a.append(np.where(day == data)[0][0])
# 8.47 µs ± 224 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)

为此使用 numpy 有点矫枉过正,但您希望的正确输出是这样完成的:

for idx, day in enumerate(data1):
    a.append(np.where(day == data)[0][0])

print(a)

那是因为 np.where returns 索引结果的元组,而不仅仅是结果

您可以使用此代码:

a = []

data = ['2007-01-03', '2007-01-04', '2007-01-05', '2007-01-08', '2007-01-09'
    , '2007-01-10', '2007-01-11', '2007-01-12', '2007-01-16']
data1 = ['2007-01-04', '2007-01-11']

data = np.array(data)
data1 = np.array(data1)

for idx, day in enumerate(data1):
    a.append(np.where(day == data))

for i in range(len(a)):  # Add this part of the code to get values 
    print(data[(a)[i]])