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

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

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

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

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:所有输入数组必须具有相同数量的维度。”

我不关心由于附加而导致的准确性损失,因为这是我打印之前的最后一步。

python arrays string floating-point scientific-notation
2个回答
0
投票

首先尝试使D成为一个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


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)
© www.soinside.com 2019 - 2024. All rights reserved.