6

以下のコードでは、ネストされたリストにデータを構築しています。forループの後、私が望むのは、それを可能な限りきれいに多次元のNumpy配列にキャストすることです。ただし、配列変換を行うと、外側のリストを配列に変換するだけのようです。さらに悪いことに、下向きに続けると、dataPointsが形になってしまい(100L,)ます...したがって、各リストが私のデータであるリストの配列(明らかに私は(100,3))が必要でした。私もだましてみましnumpy.asanyarray()たがうまくいかないようです。可能であれば、最初から3Dリストの3D配列が本当に欲しいです。そうでない場合、リストの配列をすべて繰り返して変換することなく、リストの配列を2D配列にするにはどうすればよいですか?

編集:処理が簡単になる場合は、最初からデータを構造化するためのより良い方法も受け入れています。ただし、シリアルポート経由で送信されており、サイズは事前にわかりません。

import numpy as np
import time

data = []
for _i in range(100):   #build some list of lists
    d = [np.random.rand(), np.random.rand(), np.random.rand()]
    data.append([d,time.clock()])

dataArray = np.array(data)  #now I have an array of lists of a list(of data) and a time
dataPoints = dataArray[:,0] #this is the data in an array of lists
4

2 に答える 2

8

dataPointsは2Dリストではありません。最初に2Dリストに変換すると、機能します。

d=np.array(dataPoints.tolist())

これで、dは(100,3)になります。

于 2012-12-06T15:55:05.177 に答える
-1

2D配列が必要な場合:

from itertools import chain
dataArray = np.array(list(chain(*data)),shape=(100,3))

私はコードを作成しなかったので、形状を一致させるために列/行の順序を変更する必要があるかもしれません。

于 2012-12-06T15:50:20.317 に答える