2017-06-20 5 views
-1

最後の次元とdtypeの変更の形を示さない奇妙な3D ndarray(添付ファイル参照)が見つかりました(asarrayもastypeも 'object'からnp.floatへ)動作しません。 (2ndarrayのdtypeをobjectからfloatに変更しますか?

file

それは各次元の( 'オブジェクト'、 'オブジェクト'、 'のfloat64')DTYPEのndarrayであり、実際の形状である(2,3,24)が、形状として示されています、3)、これは(2,3)の24次元配列がカウントしないことを意味します。

「DTYPE = np.float」すべてのディメンションのために、私は以前、ここで説明した方法のいずれも動作しません、エラー残念ながらValueError: setting an array element with a sequence.

を得たとして、私はこの配列を作るために.asarrayまたは.astypeを試してみてくださいこの場合、 ValueError: setting an array element with a sequence

Numpy ValueError: setting an array element with a sequence. This message may appear without the existing of a sequence?

Error: Setting an array element with a sequence. Python/Numpy

ValueError :Setting an array element with a sequence using numpy

Python Numpy Error: ValueError: setting an array element with a sequence

私は典型的なNP操作を利用できるように、どのように私はすべての次元のnp.floatに、配列のDTYPEを変更することができます?ありがとうございました。

*この問題は、pythonのcollection.dequeライブラリからいくつかのデータポイントを抽出することによって満たされました。 私はstate_array = array[:,:,0]を行うことによってフロート側要素を抽出DTYPEのタプルのシリーズ(ndarrayフロート、ブール値)を記憶し、

array = np.asarray(list(itertools.islice())).

介しndarrayとしていくつかを選びます。私はすべての次元に対してstate_arrayを純粋にnp.float dtype-d ndarrayにしたいと思っていました。このstate_arrayのデータ型がstate_array.asarray()でもnp.array(state_array)でも 'オブジェクト'がありますが、以下のエラーコードでは機能しません。あなたのダウンロードでは

ValueError: setting an array element with a sequence.

+1

2x3のオブジェクト配列があるようです。これらのオブジェクトはすべてシェイプ(24、)の配列(またはリスト)ですか?それらがあれば、それらを連結して1つの3d配列に結合することができます。しかし、いくつかのサイズ/形状が異なる場合はできません。 – hpaulj

答えて

2

、私は、配列を読み込むことができます。

In [850]: data =np.load('../Downloads/strange_array.npy',encoding='latin1') 
In [851]: data.shape 
Out[851]: (2, 3) 

の要素はすべて同じ形状とDTYPEなので、3Dの配列に結合することができます。

In [852]: [i.shape for i in data.flat] 
Out[852]: [(24,), (24,), (24,), (24,), (24,), (24,)] 
In [853]: [i.dtype for i in data.flat] 
Out[853]: 
[dtype('float64'), 
dtype('float64'), 
dtype('float64'), 
dtype('float64'), 
dtype('float64'), 
dtype('float64')] 

2x3の形状を平坦化すれば接合が最も簡単です:

In [854]: np.stack(data.ravel()).shape 
Out[854]: (6, 24) 
In [855]: np.stack(data.ravel()).reshape(2,3,24) 
+0

ありがとうございます!私は自動的に新しいndarrayに配列を選んでいる。 – sdr2002

関連する問題