我正在尝试编写一个要在多个IPython引擎中执行的函数。该函数以pandas系列作为参数。Series的每个元素都是一个字符串,整个Series构成TF.IDF计算的语料库。阅读IPython并行文档和一些教程之后,这似乎很简单,我想到了以下内容:import pandas as pdfrom IPython.parallel import Clientdef calculemus(corpus): from sklearn.feature_extraction.text import TfidfVectorizer vectorizer = TfidfVectorizer(min_df=1, stop_words='english') return vectorizer.fit_transform(corpus)review = pd.read_csv('review.csv')['text']review = review.fillna('')client = Client()r = client[-1].apply(calculemus, review).get()但是我却得到了这个错误:---------------------------------------------------------------------------ValueError Traceback (most recent call last)/xxx/site-packages/IPython/zmq/serialize.pyc in unpack_apply_message(bufs, g, copy) 154 sa.data = m.bytes 155 --> 156 args = uncanSequence(map(unserialize, sargs), g) 157 kwargs = {} 158 for k in sorted(skwargs.iterkeys()):/xxx/site-packages/IPython/utils/newserialized.pyc in unserialize(serialized) 175 176 def unserialize(serialized):--> 177 return UnSerializeIt(serialized).getObject()/xxx/site-packages/IPython/utils/newserialized.pyc in getObject(self) 159 buf = self.serialized.getData() 160 if isinstance(buf, (bytes, buffer, memoryview)):--> 161 result = numpy.frombuffer(buf, dtype = self.serialized.metadata['dtype']) 162 else: 163 raise TypeError("Expected bytes or buffer/memoryview, but got %r"%type(buf))ValueError: cannot create an OBJECT array from memory buffer我不确定是什么问题,有人可以启发我吗?
1 回答
HUH函数
TA贡献1836条经验 获得超4个赞
这是IPython 0.13中的错误,应在master中修复。序列化numpy数组有一种特殊情况,可避免复制数据,并且此行为由isinstance(numpy.ndarray)
检查触发。这是不恰当的,因为isinstance
捕获的子类,其中包括大熊猫对象,但那些大熊猫对象(和阵列的子类中一般)应不以同样的方式进行处理,作为元数据会丢失,并且在另一侧上重建往往会失败。
PS:
r = client[-1].apply(calculemus, np.array(review, dtype=str)).get()
相当于
r = client[-1].apply_sync(calculemus, np.array(review, dtype=str))
添加回答
举报
0/150
提交
取消