1

質問が不十分に書かれている場合は、事前に謝罪してください。このサイトへの投稿はこれが 2 回目で、初心者のプログラマーです。まず、私がやろうとしていることは次のとおりです。

ステップ 0: CSV ファイルをレコード配列に変換する

ステップ 1: レコード配列を 2 つのサブ配列に分割する

ステップ 2: サブ配列をシャッフルする

ステップ 3: 2 つのサブアレイを 4 つの小さなサブアレイに分割する

ステップ 4: 各サブアレイをシャッフルする

ステップ 5: サブ配列間で値を組み合わせて一致させる

ステップ 6: サブ配列を 2 つのレコード配列の 1 つに追加し、レコード配列を 1 つの CSV ファイルに結合する

最初の数ステップはかなり単純です。

ステップ 0:

import numpy as np
import random
from matplotlib.mlab import csv2rec
from matplotlib.mlab import rec2csv

# Get recarray from CSV file
ev = csv2rec('stimuli_1.csv',delimiter = ';')
ev.resize(60) #for even splits

# Create lists to append data to
audio_files = np.recarray([],dtype = ev.dtype)
audio_files_1 = np.recarray([],dtype = ev.dtype)
audio_files_2 = np.recarray([],dtype = ev.dtype)

ステップ1:

# Split recarray into two sub-arrays
split_1 = np.split(ev,2)

ステップ 2、3、4、および 5:

# Shuffle sub-arrays, split again, and then shuffle again
for a in split_1:
    #Set count for mix-and-matching
    count = 0

    #Shuffle
    np.random.shuffle(a)

    #Split
    split_2 = np.split(a,2)

    for b in split_2:
        count = count+1

        #Shuffle
        np.random.shuffle(b)

        if count == 1:
            audio_files_1 = np.append(audio_files_1,b)
        elif count == 2:
            audio_files_2 = np.append(audio_files_2,b)

ステップ 6:

audio_files = np.append(audio_files,audio_files_1)
audio_files = np.append(audio_files,audio_files_2)

rec2csv(audio_files,'audio_files.csv')

私の問題はここで発生します。生成される CSV ファイルは問題ありませんが、非常に奇妙な値がいくつか含まれています。たとえば、「audio」フィールドの最初の値は次のようになります。

\xb8\xce\xe1H\xeb\x7f\x00\x00\xd0\x12\x81

これは何が原因ですか?配列を互いに追加する方法と関係がありますか?

4

2 に答える 2

0

それらはユニコード文字です。または少なくとも、それらはunicodeのように見えます。

それらをASCIIに変換するためのいくつかの良い提案

で遊んだ

some_string = "\xb8\xce\xe1H\xeb\x7f\x00\x00\xd0\x12\x81"

for i in some_string:
    try:
        print i.decode("windows-1252")
    except:
        print i

そして、いくつかの認識可能なキャラクターを手に入れました。

于 2014-02-17T18:06:41.790 に答える
0

ソース ファイルに Unicode 文字が含まれていますか? 残念ながら、標準ライブラリのネイティブ CSV モジュールは ASCII 文字のみを処理します。これらの種類の文字は、何かが拡張文字セット用に低い文字セットにエンコードされているときに得られるものです。いくつかの「unicodecsv」パッケージがあり、それらのコンバーターをコードに適合させたり、変換したりすることができます (対処する必要がある Unicode 文字によって異なります)。

参考までに、Joel Sposky によるこの古典的な記事があります。

于 2014-02-17T18:04:43.170 に答える