python - 带有数字和字符串数组的 numpy.column_stack

标签 python numpy

我有几个数组,其中一些是 float ,另一些是字符串字符,所有数组的长度都相同。当我尝试在这些数组中使用 numpy.column_stack 时,此函数将 float 转换为字符串,例如:

a = np.array([3.4,3.4,6.4])
b = np.array(['holi','xlo','xlo'])

B = np.column_stack((a,b))

print B
>>> [['3.4' 'holi']
     ['3.4' 'xlo']
     ['3.4' 'xlo']

type(B[0,0])
>>> numpy.string

为什么?有可能避免吗? 非常感谢您的宝贵时间。

最佳答案

最简单的结构化数组方法是使用 rec.fromarrays 函数:

In [1411]: a=np.array([3.4,3.4,6.4]); b=np.array(['holi','xlo','xlo'])
In [1412]: B = np.rec.fromarrays([a,b],names=['a','b'])
In [1413]: B
Out[1413]: 
rec.array([(3.4, 'holi'), (3.4, 'xlo'), (6.4, 'xlo')], 
          dtype=[('a', '<f8'), ('b', '<U4')])
In [1414]: B['a']
Out[1414]: array([ 3.4,  3.4,  6.4])
In [1415]: B['b']
Out[1415]: 
array(['holi', 'xlo', 'xlo'], 
      dtype='<U4')

查看其文档以获取更多参数。但它基本上构造了一个正确的复合 dtype 的空数组,并将您的数组复制到相应的字段。

关于python - 带有数字和字符串数组的 numpy.column_stack,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38927294/

相关文章:

python - 如何更改数组区域中的值?

python - 将函数向量应用于参数向量

python - 关于二进制文件的一般问题

python - 如果 collections.defaultdict 不可用怎么办?

python - numpy 和 sklearn PCA 返回不同的协方差向量

python - 如何检查一个数据框列在其他四个数据框的列中是否可用?

python - 比较数组时节省内存的 np.newaxis() 替代方案

python - 使用 Python 解析 Gmail 并将所有早于日期的标记为 "read"

python - 在屈服时连接

python - 两个数据列表的相关性