Python: Wie kriegt man erwartet eine lesbare Puffer-Objekt in Python
Ich bin quitenew zu python, und ich arbeite gerade an einem python-script, das ich geerbt von jemandem, mit dem ich arbeite, und ich bin immer diese Fehlermeldung:
expected a readable buffer object
Den code verursacht wird dies:
self.y_NoShock_data = np.zeros((self.a_count+1,1,self.numberOfTags+1,lookback+forward,),dtype=enums.
self.y_data = np.zeros((self.a_count+1,len(self.SCL)+1,self.numberOfTags+1,lookback+forward,),dtype=enums.DataPoints)
self.y_NoShock_cum_data = np.zeros_like(self.y_NoShock_data)
self.y_cum_data = np.zeros_like(self.y_data)
enums.Datenpunkte sieht wie folgt aus:
enums.DataPoints = dtype([
('Amount','float32'),
])
Den stack-trace ist wie folgt:
Internal Server
Error: /smCore/entity/1/runScenarioManager/
Traceback (most recent call last):
File "/Library/Python/2.7/site-packages/django/core/handlers/base.py", line 115, in get_response
response = callback(request, *callback_args, **callback_kwargs)
File "/Users/bentaliadoros/Documents/workspace/LivingSvnAmmar/trunk/ScenarioManagerStandAlone/smCore/views/createScenario.py", line 445, in runScenarioManager
a = ScenarioExecutionController(sEA)
File "/Users/bentaliadoros/Documents/workspace/LivingSvnAmmar/trunk/ScenarioManagerStandAlone/smCore/models/scenarioExecutionController.py", line 176, in __init__
shockEventDataSet=[], lookback=self.lookback, forward=self.forward, period=self.period) #,
File "/Users/bentaliadoros/Documents/workspace/LivingSvnAmmar/trunk/ScenarioManagerStandAlone/smCore/models/scenarioExecution.py", line 307, in buildSeedScenarioObject
cls.updateScenarioParameters(shockContainerList,shockEventDataSet, shockEventDateList)
File "/Users/bentaliadoros/Documents/workspace/LivingSvnAmmar/trunk/ScenarioManagerStandAlone/smCore/models/scenarioExecution.py", line 130, in updateScenarioParameters
self.initialiseResultArrays()
File "/Users/bentaliadoros/Documents/workspace/LivingSvnAmmar/trunk/ScenarioManagerStandAlone/smCore/models/scenarioExecution.py", line 154, in initialiseResultArrays
self.y_NoShock_cum_data = np.zeros_like(self.y_NoShock_data,dtype=enums.DataPoints)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/numpy/core/numeric.py", line 116, in zeros_like
res.fill(0)
TypeError: expected a readable buffer object
Er arbeitet an einem pc und ich bin auf einem Mac.
Ich habe schon Rum gesucht, aber nicht finden können, eine Lösung für dieses, kann jemand mich in die richtige Richtung?
- Was ist
enums.DataPoints
? - Der code in den traceback nicht mit dem code, den Sie geschrieben. In der traceback,
dtype
angegeben ist (als der Typ @Jaime hat gefragt), aber nicht in dem code, den Sie geschrieben an der Spitze. Werden Sie sicher, dass Sie gespeichert haben (und neu geladen werden, wenn der interaktive) Ihre Quell-Datei, wenn Sie änderungen vorgenommen haben. - Ich fügte hinzu, enums.Datenpunkte, danke
- dies führt zu diesem Fehler:
_p = np.empty(1, dtype=[('p', np.uint16), ('pr', np.uint16)])
dann_p[:]=1
aber nicht dieses:_p = np.empty(2, dtype=[('p', np.uint16), ('pr', np.uint16)])
dann_p[:]=1
, sieht aus wie ein bug für mich (1.8.2)
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ist es schwer zu reagieren, ohne zu wissen, was die
enums.DataPoints
dtype Objekt aussieht, aber ich werde versuchen zu erklären, wo Sie sehen, dass Fehlermeldung.Wenn Sie versuchen, zu setzen (ein element von) ein array um einen Wert, der nicht ausrichten ordnungsgemäß mit dem dtype, sehen Sie diese. Hier ist ein Beispiel:
Dieser gab einen Fehler, da es nicht verarbeiten kann zwei Werte zugeordnet, um ein element Ihres Arrays. Ihre "dtype" hat zwei Werte, so scheint es vernünftig zu erwarten, aber die array-will man ein Objekt vom Typ durch die "dtype":
Ist es wahrscheinlich, dass ein einzelner Satz von Nullen auf die gleiche Form der Arrays nicht ausrichten mit der dtype.
DataPoints
wie Sie Hinzugefügt. Welche version von numpy/python sind Sie?Die Antwort darauf war, dass ich nicht arbeiten unter der gleichen version von Numpy, dass meine Kollegen waren mit, wie bereits von @askewchan in den Kommentaren zu seiner Antwort.