我正在探索python中的scipy.linalg.get_blas_function()方法。但我注意到它在处理numpy int类型时遇到了一些困难。
输入
import scipy.linalg
import numpy as np
def blas(name, ndarray):
arr = scipy.linalg.get_blas_funcs((name,), (ndarray,), dtype=ndarray.dtype)[0]
return arr
blas_scal = blas('scal', np.array([], dtype=np.int32))
print "int32 --> %s" % (blas_scal.dtype)
blas_scal = blas('scal', np.array([], dtype=np.int64))
print "int64 --> %s" % (blas_scal.dtype)
blas_scal = blas('scal', np.array([], dtype=np.float32))
print "float32 --> %s" % (blas_scal.dtype)
blas_scal = blas('scal', np.array([], dtype=np.float64))
print "float64 --> %s" % (blas_scal.dtype)
输出
int32 --> float64
int64 --> float64
float32 --> float32
float64 --> float64
正如您所看到的,get_blas_funcs()似乎在它是整数时忽略数据类型,并且只要您有任何类型的numpy整数就输出float64。但是,使用get_blas_funcs()输入numpy float32或numpy64就可以了,并且在输出时不会更改dtype。
这里发生了什么? 该函数如何处理数据类型?
答案 0 :(得分:0)
一些一般性意见: