如何将np字符串数组与float数组python相结合

时间:2015-07-17 04:00:03

标签: python arrays string floating-point scientific-notation

我想将一个充满浮点数的数组与一个充满字符串的数组组合在一起。有没有办法做到这一点?

(我也很难绕过我的花车,插入正在将它们改为科学记数法;我无法通过一个小例子重现这一点)

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)

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

我不会因为追加而导致精确度下降,因为这是我打印前的最后一步。

2 个答案:

答案 0 :(得分:0)

首先尝试将D设为n numpy数组,然后使用C:

进行转置和连接
D=np.array([['name1','name2','name3']])
np.concatenate((C, D.T), axis=1)

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

答案 1 :(得分:0)

numpy数组仅支持数组中的一种数据类型。将浮点数更改为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)