2017-05-09 18 views
0

次のようにdtype = objectというnumpy.arrayが見つかりました。結果とnumpy配列dtypeを変換します。 ValueError:配列を持つ配列要素を設定する

fuzz_np = fuzz_df.values 
fuzz_np 

されています。しかし、私は再形成()メソッドを使用するためのDTYPE =フロートを作るために変換したい

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) 

次のように私はコードを試し、

fuzz_np.astype(float) 

私は、エラーメッセージを取得「配列との配列要素を設定します。」どうしましたか?

+1

に一致するようfuzz_np.dtype' 'の結果は何ですか?作品 – Kasramvd

+0

最初の要素が配列で、他の要素がリストであるのは変ですか? – IanS

+1

その形状は何ですか?私は5x4を推測しています。しかし、それは1つの配列を含み、残りの3つの要素リストを含みます。組み込み配列をリストに変換し、外側のリストも変換することができます。 – hpaulj

答えて

1

オブジェクト配列を作成し、リストでそれを埋める:

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

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]]]) 

オブジェクト配列はポインタが含まれています(メモリ内のどこにあるのか)。だからastypeviewはフロート配列に変換できません。代わりに、同等のネストされたリストから全く新しい、新しい配列を作成する必要があります。


tolistも、1つ以上の要素が配列の場合に限り、サイズは

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]]]) 
+0

本当にうまくいきます。あなたの分析は深く正確です。みんなありがとう。 – coolboy

関連する問題