我正在努力尝试使用numpy连接两个数组。其中一个数组有文本(string
),另一个数组有数字(int64
)。
我怎么做?
使用np.concatenate()
将所有值设置为字符串并且需要两者。
我正在运行一个for循环来确定RandomForestClassifier
的超参数...当循环转到数字时,给出一个错误,因为期待数字并得到字符串'1'
或'2'
。
我正在使用
np.concatenate((['auto'], np.arange(20, 120, 20)), axis=0, out=None)
并得到
array(['auto', '20', '40', '60', '80', '100'], dtype='<U11')
但是,我需要
array(['auto', 20, 40, 60, 80, 100])
您要连接的其中一个数组应该具有对象dtype,以便获得具有对象类型的最终数组,该数组可以保存具有异构数据类型的项:
In [7]: np.concatenate((['auto'], np.arange(20, 120, 20).astype(object)), axis=0, out=None)
Out[7]: array(['auto', 20, 40, 60, 80, 100], dtype=object)
如果您想知道Numpy如何确定数组类型,您可以阅读How does numpy determin the object-array's dtype and what it means?
虽然可能不是最佳解决方案,但这可行:
np.asarray(['auto'] + list(np.arange(20, 120, 20)), dtype=object)
结果:
array(['auto', 20, 40, 60, 80, 100], dtype=object)
问题在于你要组合不同的类型,所以你需要告诉numpy所有对象都是允许的,没有转换。