[英]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.