Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 转换numpy数组数据类型。ValueError:使用序列设置数组元素_Python_Arrays_Pandas_Numpy - Fatal编程技术网

Python 转换numpy数组数据类型。ValueError:使用序列设置数组元素

Python 转换numpy数组数据类型。ValueError:使用序列设置数组元素,python,arrays,pandas,numpy,Python,Arrays,Pandas,Numpy,我得到了一个numpy.array,其dtype=object如下所示 fuzz_np = fuzz_df.values fuzz_np 结果如下: array([[[0.31250000000000044, 0.68749999999999956, 0.0], [0.0, 0.0, 1.0], [1.0, 0.0, 0.0], [1.0, 5.2867763077388416e-17, 0.0]], [[0.75000000000000044, 0.24999999999999

我得到了一个numpy.array,其dtype=object如下所示

fuzz_np = fuzz_df.values
fuzz_np
结果如下:

array([[[0.31250000000000044, 0.68749999999999956, 0.0], [0.0, 0.0, 1.0],
    [1.0, 0.0, 0.0], [1.0, 5.2867763077388416e-17, 0.0]],
   [[0.75000000000000044, 0.24999999999999958, 0.0], [1.0, 0.0, 0.0],
    [0.30769230769230765, 0.69230769230769229, 0.0],
    [0.14285714285714257, 0.85714285714285743, 0.0]],
   [[0.0, 0.81250000000000078, 0.18749999999999983],
    [0.33333333333333331, 0.66666666666666663, 0.0],
    [0.0, 0.76923076923076894, 0.23076923076923067],
    [0.0, 0.85714285714285698, 0.14285714285714279]],
   [[0.5625, 0.43749999999999994, 0.0],
    [0.0, 0.13333333333333344, 0.86666666666666659],
    [0.96153846153846168, 0.038461538461538415, 0.0],
    [0.80952380952380942, 0.19047619047619058, 0.0]],
   [[0.0, 5.5511151231257807e-16, 1.0],
    [0.0, 0.26666666666666689, 0.73333333333333306], [0.0, 0.0, 1.0],
    [0.0, 0.28571428571428553, 0.71428571428571441]]], dtype=object)
但是,我想转换为使其dtype=float,以便使用整形方法

当我尝试以下代码时

    fuzz_np.astype(float)

我收到错误消息“使用序列设置数组元素”。怎么了?

创建一个对象数组并用列表填充它:

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)
aType不起作用

In [415]: arr.astype(float)
但列表中介机构会:

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和view无法将其转换为浮点数组。相反,我们必须从等价的嵌套列表中创建一个全新的数组

当一个或多个元素是数组时,只要大小匹配,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]]])

fuzz_np.dtype的结果是什么?第一个元素是数组而其他元素是列表,这难道不奇怪吗?它的形状是什么?我猜是5x4。但它包含一个数组,其余3个元素列表。您可能已经将嵌入的数组转换为列表,外部的tolist也可以。dtype=object允许这种非同质形状。如果你想让它浮动,你需要一个统一的形状。你可以把这个读出来。@Kasramvd它是dtype'O'它真的很有效。你的分析深刻而准确。谢谢你,伙计。