python-numpy向量化函数的返回dtype

我对向量化函数返回的numpy数组的dtype有问题.我的函数返回一个数字,最终是一个分数.奇怪的是,分数的位置似乎会影响返回的dtype.如果函数返回小数,我希望类型始终是对象.

import numpy as np
from fractions import Fraction

foo = lambda x: Fraction(1, 3) if x < 0.5 else 1
foo_vectorized = np.vectorize(foo)

foo_vectorized([1, 0.3]) # returns array([1, 0])
foo_vectorized([0.3, 1]) # returns array([Fraction(1, 3), 1], dtype=object)

这是一个错误还是应该像这样工作?我在Enthought Canopy Python 2.7.6上使用numpy 1.9.2.

感谢您的解释!

解决方法:

就像documentation所说的那样:

“除非指定了输出类型,否则通过评估输入的第一个元素来确定输出类型.”

您可以通过arg类型指定所需的输出类型,例如:

 np.vectorize(foo, otypes=[np.object])
上一篇:numpy求解无循环的3d线性方程


下一篇:numpy.vectorize一个实例方法有可能吗?