这是我的代码:
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'
,为什么不起作用?
答案 0 :(得分:1)
简短回答:您可能想要使用 float(np.dot(a,b.T))
。
您的np.dot
生成一个3×3矩阵:
>>> np.dot(a.T,b)
array([[2, 2, 2],
[4, 4, 4],
[6, 6, 6]])
并且没有通用的固有方法将矩阵转换为浮点数(当然,您可以计算行列式,但这是 a 转换)。< / p>
您可能希望以相反的方式使用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会使它更方便,你只需在矩阵上调用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'>