2009-11-05 73 views
0

我想將int64 numpy數組轉換爲uint64 numpy數組,將2 ** 63添加到進程中的值中,以使它們仍處於數組允許的有效範圍內。因此,舉例來說,如果我從將int64轉換爲uint64

a = np.array([-2**63,2**63-1], dtype=np.int64) 

開始我想用

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

落得聽起來很簡單,在第一,但你會如何真正做到這一點?

回答

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

2

使用astype():

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