np字符串数组与float数组python的结合

2024-05-19 03:38:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我想把一个满是浮点数的数组和一个满是字符串的数组结合起来。有办法吗?

(我的浮动圈也有问题,insert正在将它们改为科学符号;我无法用一个小例子来重现这一点)

A=np.array([[1/3,257/35],[3,4],[5,6]],dtype=float)
B=np.array([7,8,9],dtype=float)
C=np.insert(A,A.shape[1],B,axis=1)
print(np.arround(B,decimals=2))
D=np.array(['name1','name2','name3'])

我如何将D附加到C的末尾,就像将B附加到A一样(将D作为C的最后一列插入)?

我怀疑在同一个数组中包含字符串和浮点数之间存在类型问题。如果有办法把一个浮点数(或者一个科学数字,我的数字显示为“5.02512563e-02”)改为一个大约有4位数字的字符串(.0502),它也会回答我的问题。

我认为concatenate不起作用,因为数组维数是(3,3)和(,3)。D是一个一维数组,D.T与D没有区别。另外,当我插入这个时,我得到“ValueError:所有输入数组必须具有相同的维数。”

我不在乎由于附加而导致的精度损失,因为这是打印前的最后一步。


Tags: 字符串np符号数字科学数组floatarray
2条回答

尝试先将D设为numpy数组,然后转置并与C连接:

D=np.array([['name1','name2','name3']])
np.concatenate((C, D.T), axis=1)

有关说明和示例,请参见concatenate文档: http://docs.scipy.org/doc/numpy/reference/generated/numpy.concatenate.html

numpy数组只支持数组中的一种数据类型。将float更改为str不是一个好主意,因为它只会导致非常接近原始值的值。

尝试使用pandas,它在一列中支持多个数据类型。

import numpy as np
import pandas as pd
np_ar1 = np.array([1.3, 1.4, 1.5])
np_ar2 = np.array(['name1', 'name2', 'name3'])
df1 = pd.DataFrame({'ar1':np_ar1})
df2 = pd.DataFrame({'ar2':np_ar2})
pd.concat([df1.ar1, df2.ar2], axis=0)

相关问题 更多 >

    热门问题