0
numpy 명령을 사용하여 파이썬으로 사전을 만들고 싶습니다.파이썬에서 구조화 된 배열 만들기
먼저 구조체를 정의한 다음 사용자가 선택한 숫자/대소 문자를 기준으로 배열을 채 웁니다. 내가 (경우 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
나를 위해 그것을 좁혀 주셔서 감사합니다, 나는 모양을하고 이해하려고합니다. –
또한 0 배열을 만들 때 이미 항목의 길이를 정의해야한다는 것도 중요 할 수 있습니다. 따라서 동일한 배열은 길이가 다르기 때문에 사용자가 정의한 서로 다른 경우에 적합하지 않습니다. 이러한 방식으로 구조화 된 배열을 사용하는 것은 어려울 수 있습니다. – dnalow