6
from scipy.io.wavfile import read
filepath = glob.glob('*.wav')
rates = []
datas = []
for fp in filepath:
    rate, data = read(fp)
    rates.append(rate)
    datas.append(data)

リスト「データ」を取得します。これは次のとおりです。

[array([0, 0, 0, ..., 0, 0, 0], dtype=int16), array([0, 0, 0, ..., 0, 0, 1], dtype=int16), array([0, 0, 0, ..., 0, 0, 0], dtype=int16),..., array([0, 0, 0, ..., 0, 0, 0], dtype=int16)]

そして私は使用します

new_array = numpy.vstack([datas])

new_array を取得するには:

[[array([0, 0, 0, ..., 0, 0, 0], dtype=int16)
  array([0, 0, 0, ..., 0, 0, 1], dtype=int16)
  array([0, 0, 0, ..., 0, 0, 0], dtype=int16)
  ...
  array([0, 0, 0, ..., 0, 0, 0], dtype=int16)]]

しかし、私が本当に好むのは次のとおりです。

(array([[ 0,  0,  0, ...,  0,  0,  0],
   [ 0,  0,  0, ...,  0,  0,  1],
   [ 0,  0,  0, ...,  0,  0,  0],
   ...,        
   [ 0,  0,  0, ...,  0,  0,  0]], dtype=int16)

どの機能を使用すればよいですか?

ありがとう。

4

1 に答える 1

5

以下は私にとってはうまくいくのでdatas、質問が示唆するように要素がフラットな配列ではないか、潜在的な行の長さが異なるか (これが理由であることが判明しました。コメントを参照してください)、またはおそらく、の 1 次元オブジェクトの問題vstack? (可能性は低いと思いますが)

In [14]: datas = [np.asarray([0, 0, 0, 0, 0, 0]), np.asarray([0, 0, 0, 0, 0, 1])]

In [15]: datas
Out[15]: [array([0, 0, 0, 0, 0, 0]), array([0, 0, 0, 0, 0, 1])]

In [16]: datas[0].shape
Out[16]: (6,)

In [17]: np.vstack(datas)
Out[17]:
array([[0, 0, 0, 0, 0, 0],
       [0, 0, 0, 0, 0, 1]])
于 2013-10-08T18:16:24.677 に答える