为什么从列表创建float32数组会引发值错误?

时间:2020-02-21 22:26:14

标签: python numpy valueerror

我正在尝试如下创建一个float32数组,

np.float32([kp2, kp2+dir_v*dist, kp2 + dir_v_r*dist])

但是,出现以下错误

ValueError:设置具有序列的数组元素。

我尝试将其显式转换为numpy数组,如下所示,然后重试,但仍然出现相同的错误

np.array([kp2, kp2+dir_v*dist, kp2 + dir_v_r*dist]).astype(float)

我想念什么?

2 个答案:

答案 0 :(得分:0)

使用dtype的{​​{1}}参数指定数据类型。

np.array()

答案 1 :(得分:0)

这是一个产生错误的示例:

In [910]: np.array([1,[1,2,3],4])                                                              
Out[910]: array([1, list([1, 2, 3]), 4], dtype=object)

不进行float转换就可以-但出现错误:

In [911]: np.array([1,[1,2,3],4]).astype(float)                                                
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
TypeError: float() argument must be a string or a number, not 'list'

The above exception was the direct cause of the following exception:

ValueError                                Traceback (most recent call last)
<ipython-input-911-9c007059d6ad> in <module>
----> 1 np.array([1,[1,2,3],4]).astype(float)

ValueError: setting an array element with a sequence.

我怀疑[kp2, kp2+dir_v*dist, kp2 + dir_v_r*dist]包含数字,数组和产生对象dtype数组的列表的组合。

如果列表中确实包含数字和数字(或数组)列表,则hstack可能是您想要的:

In [922]: np.hstack([1,[1,2,3],4])                                                             
Out[922]: array([1, 1, 2, 3, 4])