我想將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)
落得聽起來很簡單,在第一,但你會如何真正做到這一點?
我想將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)
落得聽起來很簡單,在第一,但你會如何真正做到這一點?
我不是一個真正的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
)
使用astype():
(a+2**63).astype(uint64)
# array([ 0, 18446744073709551615], dtype=uint64)