将hh:mm:ss转换为秒

时间:2017-04-20 02:32:11

标签: python arrays date numpy

我有两个数据数组。两个数组都包含HH:MM:SS格式的日期。我想要做的是找到两个数组匹配日期的索引。我遇到的问题是':'字符导致它不起作用。这是我的代码......

import numpy as np

t1 = np.array(['11:13:10', '10:13:12', '10:13:40'])

t2 = np.array(['11:14:10', '10:14:12', '10:13:40'])

t_1 = np.in1d(t1,t2)

t_1_index = np.where(t_1 == True)

print t_1_index

我的代码结果打印为(array([], dtype=int64),),为空白。如何让它返回(array([0,0,1], dtype=int64),)?我知道这个问题之前已被问过,我已经阅读了答案,但它没有帮助我解决我的问题。任何帮助将不胜感激。

5 个答案:

答案 0 :(得分:1)

np.in1d查看数组1中的元素是否在数组2中。因此,每次使用该方法而不是3时,您实际上都在进行3X3 = 9次操作。

试试这个。

t1 = ['11:13:10', '10:13:12', '10:13:40']
t2 = ['11:14:10', '10:14:12', '10:13:40']
t3 = []

for i in range(0, len(t1)):
  if t1[i] == t2[i]:
    t3.append(1)
  else:
    t3.append(0)

print(t3)

答案 1 :(得分:0)

t_1 = np.in1d(t1,t2)
##output = array([False, False,  True], dtype=bool)

##then you can do:
t_1.astype('int')  #this transforms booleans to integers
##output-> array([0, 0, 1])

答案 2 :(得分:0)

我认为问题是你错误地使用了np.where,它返回了真值的索引。

t_1 = np.in1d(t1,t2)
t_1_index = t_1 * 1

这应该有用〜

答案 3 :(得分:0)

试试这个

map(lambda x: 1 if x else 0, [False, False, True])
[0, 0, 1]

map(lambda x,y: 1 if x==y else 0, ['11:13:10', '10:13:12', '10:13:40'],
                                  ['11:14:10', '10:14:12', '10:13:40'])
[0, 0, 1]

[(lambda x,y: 1 if x==y else 0)(*a) for a in zip(['11:13:10', '10:13:12', '10:13:40'], 
                                                 ['11:14:10', '10:14:12', '10:13:40'])]
[0, 0, 1]

答案 4 :(得分:0)

在我的实际代码中,我有两个不同长度的numpy数组。所以我采用了DiderDrogba344的方法来适应这种情况。我的最终代码如下。谢谢大家的帮助。

import numpy as np

t1 = np.array(['11:13:10', '10:13:12', '10:13:40'])
t2 = np.array(['11:14:10', '10:14:12', '10:13:40', '10:14:16'])
t3 = []

t1 = np.ndarray.tolist(t1)
t2 = np.ndarray.tolist(t2)



for i in range(0, len(t1)):
    for j in range(0, len(t2)):
        if t1[i] == t2[j]:
            t3.append(1)
    else:
        t3.append(0)

print(t3)

if len(t1) < len(t2):
    index_t2 = t3.index(1)
    number_in_t1 = t2[index_t2]
    index_t1 = t1.index(number_in_t1)


else:
    index_t1 = np.where(t3 == 1)
    number_in_t2 = t1[index_t1]
    index_t2 = np.where(t2 == number_in_t2)

print index_t1
print index_t2