Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:如何在Python中处理预期的可读缓冲区对象_Python_Numpy - Fatal编程技术网

Python:如何在Python中处理预期的可读缓冲区对象

Python:如何在Python中处理预期的可读缓冲区对象,python,numpy,Python,Numpy,我对python非常熟悉,正在编写一个python脚本,该脚本是我从与我一起工作的人那里继承的,我遇到了以下错误: expected a readable buffer object 导致这种情况的代码是: 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,l

我对python非常熟悉,正在编写一个python脚本,该脚本是我从与我一起工作的人那里继承的,我遇到了以下错误:

expected a readable buffer object
导致这种情况的代码是:

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.DataPoints如下所示:

enums.DataPoints = dtype([
        ('Amount','float32'),
        ])
堆栈跟踪如下所示:

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
他在电脑上工作,我在Mac上工作。
我一直在四处寻找,但找不到解决方案,有人能告诉我正确的方向吗?

如果不知道枚举.DataPointsdtype对象是什么样子,很难做出响应,但我将尝试解释您在哪里看到错误消息

当您试图将数组的某个元素设置为与其数据类型不正确对齐的值时,您将看到以下情况。以下是一个例子:

In [133]: data = np.zeros((3,2), dtype="int, int")

In [134]: data
Out[134]: 
array([[(0, 0), (0, 0)],
       [(0, 0), (0, 0)],
       [(0, 0), (0, 0)]], 
      dtype=[('f0', '<i8'), ('f1', '<i8')])

In [135]: data[0, 0]
Out[135]: (0, 0)

In [136]: data[0, 0] = [1,2]
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-136-399e78675be4> in <module>()
----> 1 data[0, 0] = [1,2]

TypeError: expected a readable buffer object
[133]中的
:data=np.zero((3,2),dtype=“int,int”)
In[134]:数据
出[134]:
数组([(0,0),(0,0)],
[(0, 0), (0, 0)],
[(0, 0), (0, 0)]], 

dtype=[('f0','这个问题的答案是,正如@askewchan在对其答案的评论中指出的那样,我并不是在同事们使用的同一版本的Numpy下工作的

  • 失败:numpy 1.6.1
  • 作品:numpy 1.7
  • 作品:numpy 1.8.0

什么是
enums.DataPoints
?回溯中的代码与您发布的代码不匹配。在回溯中,指定了
dtype
(正如@Jaime所询问的),但不是在您发布的顶部代码中。请确保已保存(如果是交互式的,请重新加载)如果您进行了更改,请访问您的源文件。我添加了enums.DataPoints,感谢此错误导致的结果:
\u p=np.empty(1,dtype=[('p',np.uint16),('pr',np.uint16)]
然后
\u p[:]=1
,但这不是:
\u p=np.empty(2,dtype=[('p',np.uint16),('pr',np.uint16)]
然后
\u p[]=1,在我看来像一个bug(8.2)代码在我同事的计算机(Windows 7)上运行良好。从askewchan的回答来看,我不清楚为什么会出现这个问题,特别是因为我们使用的是numpy.zeros_like()--从文档中可以看出,这基本上可以复制之前的数组?是的,它在我的计算机上运行良好(python 2.7,numpy 1.7)同样,现在我已经设置了你添加的
数据点
。你运行的是哪个版本的numpy/python?我使用的是numpy 1.6.1版和python 2.7.2版。对于这个帮助,我发现我的numpy已经过时,我更新到了1.8.0,错误现在消失了。谢谢创建,@Ben。如果这回答了你的问题,请接受我的或添加你自己的,接受它,把问题标记为已回答。谢谢!
In [137]: data[0,0] = (1,2)

In [138]: data
Out[138]: 
array([[(1, 2), (0, 0)],
       [(0, 0), (0, 0)],
       [(0, 0), (0, 0)]], 
      dtype=[('f0', '<i8'), ('f1', '<i8')])