Python 将int64转换为uint64
我想将int64 numpy数组转换为uint64 numpy数组,在过程中向值添加2**63,使它们仍然在数组允许的有效范围内。例如,如果我从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
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
导入的。谢谢你指出这一点。