尝试将字段追加到大小为 ONE 的结构化数组时出现运行时错误。我在下面写了一个简单的例子:
import numpy as np
import numpy.lib.recfunctions as rcfuncs
dtype_ = np.dtype( { 'names': ["field_a","field_b","field_c"]
, 'formats': ['S32', 'i4', 'f8']}
)
data_ = [("1",17, 123.45)]
numpy_array = np.array(data_, dtype_)
# append 2 fields
numpy_array = rcfuncs.append_fields( numpy_array,["field_d","field_e"],data=[ "1","3" ] )
# append 1 field fails :(
numpy_array = rcfuncs.append_fields( numpy_array, "field_f", data=["123456"] )
我收到错误:
TypeError: descriptor 'ravel' requires a 'numpy.ndarray' object but received a 'numpy.void'
同样,如果我“反转”追加,带有两个追加字段的语句将失败:
# append 1 field
numpy_array = rcfuncs.append_fields( numpy_array, "field_f", data=["123456"] )
# append 2 fields fails :(
numpy_array = rcfuncs.append_fields( numpy_array,["field_d","field_e"],data=[ "1", "3" ] )
我正在运行 python 2.7.11 和 numpy 1.11.0,当初始数组的大小大于 2 时,我没有遇到问题。
如何解决类型错误?
谢谢
最佳答案
将可选参数 usemask 设置为 False 时,我们没有得到 TypeError
numpy_array = \
rcfuncs.append_fields(numpy_array, "field_f", data=["123456"], usemask=False)
numpy_array = \
rcfuncs.append_fields(numpy_array,["field_d","field_e"],data=[ "1", "3" ], usemask=False)
关于python - 将字段附加到大小为 ONE 的结构化数组时出现 TypeError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36440557/