Python 将int64转换为uint64

Python 将int64转换为uint64,python,numpy,Python,Numpy,我想将int64 numpy数组转换为uint64 numpy数组,在过程中向值添加2**63,使它们仍然在数组允许的有效范围内。例如,如果我从 a = np.array([-2**63,2**63-1], dtype=np.int64) 我想和你在一起 np.array([0.,2**64], dtype=np.uint64) 一开始听起来很简单,但实际上你会怎么做呢?我不是一个真正的numpy专家,但是: >>> a = np.array([-2**63,2**63-1

我想将int64 numpy数组转换为uint64 numpy数组,在过程中向值添加2**63,使它们仍然在数组允许的有效范围内。例如,如果我从

a = np.array([-2**63,2**63-1], dtype=np.int64)
我想和你在一起

np.array([0.,2**64], dtype=np.uint64)

一开始听起来很简单,但实际上你会怎么做呢?

我不是一个真正的numpy专家,但是:

>>> a = np.array([-2**63,2**63-1], dtype=np.int64)
>>> b = np.array([x+2**63 for x in a], dtype=np.uint64)
>>> b
array([                   0, 18446744073709551615], dtype=uint64)
我可以使用Python 2.6和numpy 1.3.0


我假设您在预期输出中的意思是
2**64-1
,而不是
2**64
,因为
2**64
不适合uint64。(18446744073709551615是
2**64-1

我不是一个真正的numpy专家,但这:

>>> a = np.array([-2**63,2**63-1], dtype=np.int64)
>>> b = np.array([x+2**63 for x in a], dtype=np.uint64)
>>> b
array([                   0, 18446744073709551615], dtype=uint64)
我可以使用Python 2.6和numpy 1.3.0

我假设您在预期输出中的意思是
2**64-1
,而不是
2**64
,因为
2**64
不适合uint64。(18446744073709551615是
2**64-1

用于将值转换为其他数据类型:

import numpy as np
(a+2**63).astype(np.uint64)
# array([                   0, 18446744073709551615], dtype=uint64)
用于将值转换为其他数据类型:

import numpy as np
(a+2**63).astype(np.uint64)
# array([                   0, 18446744073709551615], dtype=uint64)

怎样?NameError:未定义名称“uint64”。需要从
numpy
中删除的任何内容?@Hack-R:
uint64
应该是
np.uint64
,前提是
numpy
是使用
import numpy as np
导入的。谢谢你指出这一点。怎么说?NameError:未定义名称“uint64”。需要从
numpy
中删除的任何内容?@Hack-R:
uint64
应该是
np.uint64
,前提是
numpy
是使用
import numpy as np
导入的。谢谢你指出这一点。