python - 将字段附加到大小为 ONE 的结构化数组时出现 TypeError

标签 python numpy structured-array

尝试将字段追加到大小为 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/

相关文章:

python - 在 Python 中打开 URL 并获取最多 X 字节的最佳方法是什么?

python - Pandas 合并错误: cannot reindex from a duplicate axis

python - 属性错误 : FUN instance has no attribute '__trunc__'

python - numpy argsort 可以处理关系吗?

python - numpy 数组作为结构化数组中的数据类型?

python - 如何优雅地链接if else

python - 在 macOS Sierra Python 2.7 上安装 mysqlclient 时出错

python - 我可以在生成随机值时指定一个 numpy dtype 吗?

结构化数组的 Numba 签名

python - NumPy 结构化数组的真正递归 `tolist()`