"AttributeError: 'matrix' object has no attribute 'strftime'" error in numpy python

"AttributeError: 'matrix' object has no attribute 'strftime'" error in numpy python

我有一个维度为 (72000, 1) 的矩阵。该矩阵涉及时间戳。

我想使用 "strftime" 如下; strftime("%d/%m/%y"),为了得到这样的输出:'11/03/02'.

我有这样一个矩阵:

M = np.matrix([timestamps])

并且我使用 "strftime" 将所有涉及时间戳的矩阵转换为涉及字符串类型日期的矩阵。出于这个原因,我使用 "strftime" 作为 follwing:

M = M.strftime("%d/%m/%y")

当我 运行 代码时,我得到这个错误:

AttributeError: 'matrix' object has no attribute 'strftime'

这个功能的正确使用方法是什么?如何将时间戳矩阵转换为日期字符串矩阵?

如错误消息所示,您不能执行类似 matrix.strftime 的操作。您可以做的一件事是使用 numpy.apply_along_axis 。示例 -

np.apply_along_axis((lambda x:[x[0].strftime("%d/%m/%y")]),1,M)

演示 -

In [58]: M = np.matrix([[datetime.datetime.now()]*5]).T

In [59]: M.shape
Out[59]: (5, 1)

In [60]: np.apply_along_axis((lambda x:[x[0].strftime("%d/%m/%y")]),1,M)
Out[60]:
array([['10/10/15'],
       ['10/10/15'],
       ['10/10/15'],
       ['10/10/15'],
       ['10/10/15']],
      dtype='<U8')

对于您收到的新错误 -

"AttributeError: 'numpy.float64' object has no attribute 'strftime'"

这意味着对象不是datetime对象,因此如果它们是时间戳,您可以先将它们转换为日期时间。示例 -

np.apply_along_axis((lambda x:[datetime.datetime.fromtimestamp(x[0]).strftime("%d/%m/%y")]),1,M)