【问题标题】:How to combine np string array with float array python如何将np字符串数组与浮点数组python结合起来
【发布时间】:2015-10-06 17:22:47
【问题描述】:

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

(我的浮点数四舍五入也有问题,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'])

如何以与将 B 附加到 A 相同的方式将 D 附加到 C 的末尾(将 D 作为 C 的最后一列插入)?

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

我相信连接不起作用,因为数组维度是 (3,3) 和 (,3)。 D 是一维数组,D.T 与 D 没有什么不同。此外,当我将其插入时,我得到“ValueError:所有输入数组必须具有相同的维数。”

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

【问题讨论】:

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


    【解决方案1】:

    先尝试使 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

    【讨论】:

    • 由于 D 是一维数组,因此 D.T 与 D 没有什么不同。
    • 我很困惑。 D如何成为一个一维数组并添加到C上?你能展示一下预期的最终输出是什么吗?
    【解决方案2】:

    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)
    

    【讨论】:

      【解决方案3】:

      在你的 numpy 数组中使用dtype=object;像下面这样:

      np.array([1, 'a'], dtype=object)
      

      【讨论】:

        猜你喜欢
        • 2021-11-27
        • 2021-04-08
        • 2023-03-30
        • 2021-12-28
        • 1970-01-01
        • 2021-12-19
        • 2017-08-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多