转换numpy数组数据类型。值错误:设置具有序列的数组元素

2024-10-08 19:25:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数字阵列其dtype=object,如下所示。在

fuzz_np = fuzz_df.values
fuzz_np

结果是:

^{pr2}$

但是,我想转换它的dtype=float,以便使用resheme()方法。在

当我尝试以下代码时

    fuzz_np.astype(float)

我收到错误消息“setting an array element with a sequence.”怎么了?在


Tags: 方法代码消息dfobject错误np数字
1条回答
网友
1楼 · 发布于 2024-10-08 19:25:12

制作一个对象数组并用列表填充它:

In [410]: arr = np.zeros(6,object)
In [411]: for i in range(6): arr[i]=[1,2,3]
In [413]: arr=arr.reshape(2,3)
In [414]: arr
Out[414]: 
array([[[1, 2, 3], [1, 2, 3], [1, 2, 3]],
       [[1, 2, 3], [1, 2, 3], [1, 2, 3]]], dtype=object)

astype不工作

^{pr2}$

但名单中介机构会:

In [416]: np.array(arr.tolist())
Out[416]: 
array([[[1, 2, 3],
        [1, 2, 3],
        [1, 2, 3]],

       [[1, 2, 3],
        [1, 2, 3],
        [1, 2, 3]]])

对象数组包含指向列表(内存中其他位置)的指针。因此astype和{}无法将其转换为浮点数组。相反,我们必须从等价的嵌套列表中创建一个全新的数组。在


当一个或多个元素是数组时,只要大小匹配,tolist也可以工作

In [417]: arr[0,0]=np.arange(3)
In [418]: arr
Out[418]: 
array([[array([0, 1, 2]), [1, 2, 3], [1, 2, 3]],
       [[1, 2, 3], [1, 2, 3], [1, 2, 3]]], dtype=object)
In [419]: arr.tolist()
Out[419]: [[array([0, 1, 2]), [1, 2, 3], [1, 2, 3]], [[1, 2, 3], [1, 2, 3], [1, 2, 3]]]
In [420]: np.array(arr.tolist())
Out[420]: 
array([[[0, 1, 2],
        [1, 2, 3],
        [1, 2, 3]],

       [[1, 2, 3],
        [1, 2, 3],
        [1, 2, 3]]])

相关问题 更多 >

    热门问题