【发布时间】:2016-01-21 18:10:04
【问题描述】:
我正在使用 python 包装器来调用 c++ dll 库的函数。 dll 库返回一个 ctype,我将其转换为 numpy 数组
score = np.ctypeslib.as_array(score,1)
但是,数组没有形状?
score
>>> array(-0.019486344729027664)
score.shape
>>> ()
score[0]
>>> IndexError: too many indices for array
如何从分数数组中提取双精度数?
谢谢。
【问题讨论】:
-
那是一个形状;它的形状
(),又名 0 维。 -
非常感谢。有什么方法可以提取数组内的双精度数吗?我想这是最后的问题
-
您可以使用
float(score)。但是你怎么会得到一个 0 维数组,即score的初始类型和值是什么? -
你为什么在这件事上打电话给
np.ctypeslib.as_array?1不是一个有效的形状,如果只有一个值,为什么要使用np.ctypeslib.as_array来检索它?为什么不通过正常的 ctypes 界面呢? -
shape参数仅用于指针,因此我们知道score最初不是指针,否则传递shape=1将是错误的。如果您将as_array传递给c_double(-0.19)之类的标量,它会将__array_interface__属性存储在c_double类型和shape=()上。然而,在 NumPy 1.8.2 中,这实际上创建了一个带有shape=(1,)的数组。也许在旧版本中它会创建一个标量“数组”。
标签: python arrays numpy ctypes dimensions