如何连接2个数组:1个数组包含字符串,另一个数组包含int64

问题描述 投票:1回答:2

我正在努力尝试使用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])
python arrays numpy
2个回答
2
投票

您要连接的其中一个数组应该具有对象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?


0
投票

虽然可能不是最佳解决方案,但这可行:

np.asarray(['auto'] + list(np.arange(20, 120, 20)), dtype=object)

结果:

array(['auto', 20, 40, 60, 80, 100], dtype=object)

问题在于你要组合不同的类型,所以你需要告诉numpy所有对象都是允许的,没有转换。

© www.soinside.com 2019 - 2024. All rights reserved.