簡體   English   中英

在Python中將'numpy.ndarray'轉換為float64失敗?

[英]Convert 'numpy.ndarray' to float64 failed in python?

這是我的代碼如下:

a = np.array([[1,2,3]])
b = np.array([[2,2,2]])
x = np.dot(b,a.T)
print(type(x))

這給了我'numpy.ndarray' ,我想將'numpy.ndarray'轉換為float64:

x = x.astype(np.float64)
print(type(x))

但是它返回了'numpy.ndarray' ,為什么不起作用?

簡短的回答 :您可能想使用float(np.dot(a,bT))

您的np.dot生成3×3矩陣:

>>> np.dot(a.T,b)
array([[2, 2, 2],
       [4, 4, 4],
       [6, 6, 6]])

而且有一個矩陣轉換為浮動(你當然可以計算實例的決定因素 ,但是這是一個轉換)沒有通用的固有方式。

您可能想以其他方式使用np.dot

>>> np.dot(a,b.T)
array([[12]])

現在它是一個1×1矩陣。 這里簡單地將元素從矩陣中彈出當然是合理的。 我們可以通過索引來做到這一點:

>>> np.dot(a,b.T)[0,0]
12
>>> type(np.dot(a,b.T)[0,0])
<class 'numpy.int64'>

因此,現在我們獲得了單個in64元素。 這仍然不是浮點數,但是現在我們可以使用Python的float構造函數來獲取浮點數:

>>> float(np.dot(a,b.T)[0,0])
12.0
>>> type(float(np.dot(a,b.T)[0,0]))
<class 'float'>

現在最好的部分是,如果矩陣僅包含單個元素,則numpy使其更加方便,並且您可以簡單地在matrix上調用float(..) 所以:

>>> float(np.dot(a,b.T))
12.0

如果您想使用np.float64 ,則大致相同:

>>> np.float64(np.dot(a,b.T))
12.0
>>> type(np.float64(np.dot(a,b.T)))
<class 'numpy.float64'>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM