说,我有一个datetime
:
given_time = datetime(2013, 10, 8, 0, 0, 33, 945109,
tzinfo=psycopg2.tz.FixedOffsetTimezone(offset=60,
name=None))
我想将其转换为np.datetime64
:
np.datetime64(given_time)
> numpy.datetime64('2013-10-08T00:00:33.945109+0100')
效果很好。但是,如果我有一个数组given_time
:
given_times = np.array([given_time]*3) # dtype is object
双方given_times.astype('datetime64')
并given_times = np.array([given_time] * 3, dtype=np.datetime64)
会引发TypeError: Cannot cast datetime.datetime object from metadata [us] to [D] according to the rule 'same_kind'
因此,我必须指定单位:
given_times.astype('datetime64[us]')
# or
given_times = np.array([given_time]*3, dtype='datetime64[us]')
我的问题是,为什么我必须在这里指定单位?它在np.datatime64
构造函数中不需要单位。
我知道这是一个古老的问题,但是如果有人遇到这个问题,我会尽力回答。
从1.11版本开始,numpy
不要尝试将date / datetime对象的可迭代变量自动转换为datetime64数组,这从测试套件的摘录中可以很清楚地看出:
dt = datetime.date(1970, 1, 1)
arr = np.array([dt])
assert_equal(arr.dtype, np.dtype(‘O’))
dt = datetime.datetime(1970, 1, 1, 12, 30, 40)
arr = np.array([dt])
assert_equal(arr.dtype, np.dtype(‘O’))
理想情况下,numpy
会认为datetime64
可以使用正确的单位;看到这个问题。
datetime64
从标量构造时,将其设置M8[D]
为日期对象和日期时间对象的单位M8[us]
(相关测试)。
如果指定dtype='datetime64'
,或者,同样地,dtype='M8'
时,单位设置为“通用”,后来做出决议M8[D]
(尽管这是合乎逻辑的有它解析为M8[D]
,看到这个问题):
np.datetime_data(np.dtype(‘datetime64’))
(‘generic’, 1)
np.datetime_data(np.dtype(‘M8’))
(‘generic’, 1)
np.datetime_data(np.dtype(‘M8[D]’))
(‘D’, 1)
np.datetime_data(np.dtype(‘M8[us]’))
(‘us’, 1)
given_times.astype('datetime64')
不再引发异常-在1.11中已修复。
从1.11开始,datetime64对象是timezone-naive,因此tzinfo
如所提供的示例中那样传递带有set的datetime对象将触发弃用警告。
问题内容: 您可以将int隐式转换为double: 您可以将int显式转换为double: 您可以将double显式转换为int: 为什么不能将一个double隐式转换为int? : 问题答案: 的范围比宽。这就是为什么您需要显式强制转换。由于相同的原因,您不能隐式地从转换为:
问题内容: 注意: 这要求与通常的元组到数组的转换相反。 我必须将一个参数传递给(包装的c ++)函数作为嵌套元组。例如,以下作品 而以下 不 不幸的是,我想使用的参数是一个numpy数组。对于某些N,该阵列的尺寸始终为2xN,这可能会很大。 有没有简单的方法可以将其转换为元组?我知道我可以循环遍历,创建一个新的元组,但是如果numpy数组提供了一些不错的访问权限,我会更喜欢。 如果不可能如我所愿
问题内容: 我正在尝试将代表黑白图像的2D Numpy数组转换为3通道OpenCV数组(即RGB图像)。 基于代码示例和文档,我正尝试通过Python执行此操作,例如: 但是,对CvtColor()的调用将引发以下cpp级异常: 我究竟做错了什么? 问题答案: 您的代码可以固定如下: 简短说明: 数据类型不受OpenCV的支持(它支持,,,,,,) 无法处理numpy数组,因此必须将两个参数都转换
问题内容: 我想将图像转换为NumPy数组再转换为PySide QPixmap,因此可以显示它(在PySide UI中编辑:)。我已经找到了此工具:qimage2ndarray,但它仅适用于PyQt4。我试图对其进行更改以使其能够与PySide一起使用,但是我将不得不更改该工具的C部分,并且我没有使用C的经验。我该怎么做?或者有其他选择吗? 问题答案: 一种选择是仅使用PIL库。 您可以在http
问题内容: 我有一个WebService返回DateTime字段。 我得到一个结果,但是 我想我怎么能做到这一点。 通过设置Header Content-Type:application / json; charset = utf-8; 我得到了类似的结果。 问题答案: 您可以更改您的WS以返回带有DateTime值的long。要返回的值是自Unix纪元(01/01/1970)以来的毫秒数。这可以
以下代码在C++11中编译成功: 它包括用于现代C++的JSON。一个工作示例在这个Wandbox中。 JSON变量被隐式转换为字符串。但是,如果我取消最后一行的注释,这是一个显式转换,它将无法编译。这里的编译结果。 除了这个json库的特殊细微差别之外,如何编写一个类,使隐式转换工作,而显式转换不工作? 是否有某种构造函数限定符允许这种行为?
问题内容: 我可以隐式地将int转换为long,并将long转换为Long。为什么无法将int隐式转换为Long?为什么Java不能在示例的最后一行进行隐式转换? 问题答案: 和是对象。装箱/拆箱仅适用于原语。做的就像,那不是不!另外,请记住,之间没有继承,所以甚至无效
我的df中有3列 如何将其转换为矩阵?我试过了 但这并没有给出一个矩阵