NumPy`fromstring`函数在Python 2.7中工作正常,但在Python 3.7中返回错误

问题描述 投票:1回答:2

我使用这种语法来转换字节数组数据字(每个样本2个字节):

data = numpy.fromstring(dataword, dtype=numpy.int16)

Python 3.7中的相同指令返回错误:

TypeError: fromstring() argument 1 must be read-only bytes-like object, not memoryview

dataword = scope.ReadBinary(rlen-4) #dataword is a byte array, each 2 byte is an integer
data = numpy.fromstring(dataword, dtype=numpy.int16)# data is the int16 array

这是Python 2.7.14中data的内容:

[-1.41601562 -1.42382812 -1.42578125 ...,  1.66992188  1.65234375  1.671875  ]

我希望用Python 3.7获得相同的结果。

我怎么在3.7中使用numpy.fromstring()

python arrays python-2.7 numpy python-3.7
2个回答
1
投票

TypeError试图告诉你dataword是不支持的类型memoryview。 它需要作为不可变类型传递,如bytes

data = numpy.fromstring(dataword.tobytes(), dtype=numpy.int16)

更好;看起来像scope是一个类似文件的对象,所以这也可以工作:

data = numpy.fromfile(scope, dtype=numpy.int16, count=rlen//2-4)

0
投票

简单的解决方案...发现阅读numpy手册:用frombuffer替换fromstring

data = numpy.frombuffer(dataword,dtype = numpy.int16)完美无缺

© www.soinside.com 2019 - 2024. All rights reserved.