0
Pythonでnumpyコマンドを使って辞書を作成したいと思います。Pythonで構造化配列を作成
まず、構造体を定義してから、ユーザーが選択した数値/ケースに従って配列を作成しようとしました。私は(ケース1の場合)次のエラーを取得する例1を要求しようとすると:
cannot copy sequence with size 3 to array axis with dimension 1
は、どのように私は私の構造体にしたいデータを格納することができるようにするために自分のコードを修正することができますか?私が選択したケースにかかわらず。
# defining the structure
usgStruct = np.zeros(1,dtype = [("satNr",np.int),
("satAzimuth", np.int),
("satElevation", np.int),
("scenarioEnv", np.str),
("scenarioHead", np.int),
("scenarioLen", np.int),
("speed", np.int)])
def case1():
usgStruct["satNr"] = 3
usgStruct["satAzimuth"] = [180, 200, 235]
usgStruct["satElevation"] = [35, 25, 25]
usgStruct["scenarioEnv"] = ["S", "S", "S", "U", "U"]
usgStruct["scenarioHead"] = [45, 280, 45, 120, 200]
usgStruct["scenarioLen"] = [2000, 500, 3000, 2000, 500]
usgStruct["speed"] = [15, 15, 15, 10, 10]
return usgStruct
def case2():
usgStruct["satNr"] = 2
usgStruct["satAzimuth"] = [180, 225]
usgStruct["satElevation"] = [45, 30]
usgStruct["scenarioEnv"] = ["U", "U", "O", "O", "S", "S", "S"]
usgStruct["scenarioHead"] = [30, 65, 65, 80, 80, 60, 130]
usgStruct["scenarioLen"] = [300, 800, 2000, 1000, 700, 700, 300]
usgStruct["speed"] = [10, 10, 15, 15, 15, 15, 15]
return usgStruct
def case3():
usgStruct["satNr"] = 2
usgStruct["satAzimuth"] = [180, 225]
usgStruct["satElevation"] = [35, 30]
usgStruct["scenarioEnv"] = ['C', 'C', 'C', 'C', 'O']
usgStruct["scenarioHead"] = [90, 45, 120, 70, 45]
usgStruct["scenarioLen"] = [1500, 500, 300, 2000, 3000]
usgStruct["speed"] = [15, 15, 15, 15, 20]
return usgStruct
# set up a dictionary of actions
scenarioGenerator = {
"1": case1,
"2": case2,
"3": case3}
runscenGen = raw_input("Please enter a number from 1 to 7\n ")
scenarioGenerator.get(runscenGen,case3)() # specify a default: case3
print usgStruct
問題は、最初の配列の定義(dtype)が、入力するデータの種類に適合していないことです。特に、データの次元性は無視できません。以下の例を参照してください:http://docs.scipy.org/doc/numpy/user/basics.rec.html – dnalow
私のためにそれを絞り込んでくれてありがとう、私は見て、理解しようとします。 –
また、ゼロ配列の作成時に既にエントリの長さを定義する必要があることも重要です。したがって、同じ配列は、長さが異なるため、定義した異なるケースには適していません。この方法で構造化配列を使用するのは難しいかもしれません。 – dnalow