【问题标题】:How can I add an integer across one column in a 2d array of two columns where column one is strings and column two is integers... using numpy?如何在两列的二维数组中的一列中添加一个整数,其中第一列是字符串,第二列是整数......使用numpy?
【发布时间】:2019-11-11 19:10:39
【问题描述】:

我刚开始学习python...

我正在自己练习一些从 DataCamp 学到的东西...

我要做的是在二维数组中将两个人的年龄相加两年...

例如

people=np.array([["you',20],["me",21]])

我记得对于 NumPy 数组,所有元素都应该相同,以便进行这样的计算。但是我不能只创建第二个 np.array 然后跨第二列进行计算,例如people[:,1] 因为只有那一列是整数,而我只会将计算应用于那一列?还是因为数组 people 有 int 和 strs 而无法实现?

菜鸟问题,但我只是想在这里学习

【问题讨论】:

    标签: python addition


    【解决方案1】:

    如果所有元素都具有相同的数据类型,则 NumPy 数组效果最好。让我们看看你的初始化器:

    >>> people = np.array([['you', 20], ['me', 21]])
    array([['you', '20'],
           ['me', '21']], dtype='<U3')
    

    NumPy 看到这些字符串并推断出数据类型&lt;U3,即长度为 3 的 little-endian unicode 字符串。如果您想对第二列执行算术,这不是您想要的。您可以在构造函数中设置更通用的数据类型:

    >>> people = np.array([['you', 20], ['me', 21]], dtype='object')
    array([['you', 20],
           ['me', 21]], dtype=object)
    

    一般来说,拥有object 数据类型并不是很好,因为它效率低下(我想某些函数将无法在这些数组上正确操作)。但是,您想要的算术现在有效。让每个人都老 30 岁:

    >>> people[:, 1] += 30
    array([['you', 50],
           ['me', 51]], dtype=object)
    

    总结:如果可以避免的话,不要在同一个 NumPy 数组中使用带有数字的字符串。也许保留两个单独的数组适合您的目的。从长远来看,我建议您尝试Pandas,它旨在处理更通用和混合的数据集。

    【讨论】:

    • 现在我知道我在哪里犯了错误......我在脑海中想象着一张 Excel 表格,然后忘记了数组和计算的目的。这是处理计算而不是人名。在用 numpy 计算数据(这将是所有整数)之后,我可以将我的结果粘贴回 excel 表中,名称就可以了。呸!大声笑
    猜你喜欢
    • 2019-03-24
    • 1970-01-01
    • 2018-04-04
    • 1970-01-01
    • 2023-02-13
    • 2023-02-14
    • 2018-11-20
    • 2019-11-14
    • 2017-09-23
    相关资源
    最近更新 更多