python - NumPy 通过 TypeError 进行 join_functions

标签 python python-3.x numpy structured-array

当我尝试将“uint16”字段连接到 NumPy 1.11 或 1.12 (Python 3.5) 中的结构化数组时,遇到类型错误。

import numpy as np
from numpy.lib import recfunctions as rfn
foo = np.array([(1,)],
               dtype=[('key', int)])
bar = np.array([(1,np.array([1,2,3]))],
               dtype=[('key', int), ('value', 'uint16', 3)])
rfn.join_by('key', foo, bar)

这是错误:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/user/anaconda3/lib/python3.5/site-packages/numpy/lib/recfunctions.py", line 986, in join_by
    output.sort(order=key)
  File "/home/user/anaconda3/lib/python3.5/site-packages/numpy/ma/core.py", line 5420, in sort
    sidx = self.filled(filler).argsort(axis=axis, kind=kind,
  File "/home/user/anaconda3/lib/python3.5/site-packages/numpy/ma/core.py", line 3668, in filled
    fill_value = _check_fill_value(fill_value, self.dtype)
  File "/home/user/anaconda3/lib/python3.5/site-packages/numpy/ma/core.py", line 470, in _check_fill_value
    fill_value = np.array(_recursive_set_fill_value(fill_value, ndtype),
  File "/home/user/anaconda3/lib/python3.5/site-packages/numpy/ma/core.py", line 436, in _recursive_set_fill_value
    output_value.append(np.array(fval, dtype=cdtype).item())
TypeError: int() argument must be a string, a bytes-like object or a number, not 'NoneType'

如果我使用“float16”,则不会出现同样的问题。

import numpy as np
from numpy.lib import recfunctions as rfn
foo = np.array([(1,)],
               dtype=[('key', int)])
bar = np.array([(1,np.array([1,2,3]))],
               dtype=[('key', int), ('value', 'float16', 3)])
rfn.join_by('key', foo, bar)

这只是一个错误吗?或者有什么办法可以防止这个问题吗?

最佳答案

这是一个错误。 This PR部分修复了它,但您似乎偶然发现了一些与 np.ma 和 subdtypes 相关的蠕虫。

至于为什么它适用于 float16 - None 被强制转换为 nan (一个有问题的功能),而不是出错。

编辑: PR 已合并,这将在 numpy 1.14 中修复

关于python - NumPy 通过 TypeError 进行 join_functions,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44769632/

相关文章:

python - 删除 python pandas 列中的特定字符串

python - 为什么我的新分割数组元素被视为非 int 值?

python - 使用 OpenPyXl 检查空单元格

python - 将 Python 脚本连接到 PostgreSQL 数据库

python - 在 Pandas 中使用固定列对多列应用操作

python - XML 到 CSV 转换器

python - 这个傅立叶变换有什么问题? (在Python中)

python - scipy 稀疏矩阵的对称化

python - 我的家没有 .pypirc 文件,这在将 python 包注册到 PyPI 时给我一个错误

python - Python线程中的无限循环