【问题标题】:Sum 2d numpy array by element按元素对 2d numpy 数组求和
【发布时间】:2018-10-13 02:05:38
【问题描述】:

我需要通过索引 1 总结一个 numpy 数组,也就是 Species 所在的区域。原始数据位于 .csv 文件中,但我将其转换为 numpy 数组。剩下的就是弄清楚如何根据我的需要进行排序和求和。一个简单的 if 语句会比一个 numpy 数组函数更好吗?

数组看起来有点像这样(链接如下):

#(Species) (Region located) (# of individuals) <-- For your convenience

[['Purple Puffin' '1' '1']
['Wisteria Wombat' '3' '4']
['Pumpkin Pomeranian' '1' '3']
['Wisteria Wombat' '2' '3']
['Burgundy Bichon Frise' '2' '1']
['Purple Puffin' '1' '4']
['Wisteria Wombat' '2' '2']
['Pumpkin Pomeranian' '1' '2']]

但是整个数组有更多的数据,我可以把它链接进去。

我需要总结每个“区域”中的“个体数量”。 最终输出在 numpy 数组中应如下所示:

['Burgundy Bichon Frise' '1' '#']
['Pumpkin Pomeranian' '1' '#']
['Purple Puffin' '1' '#']
['Wisteria Wombat' '1' '#']

['Burgundy Bichon Frise' '2' '#']
['Pumpkin Pomeranian' '2' '#']
['Purple Puffin' '2' '#']
['Wisteria Wombat' '2' '#']

['Burgundy Bichon Frise' '3' '#']
['Pumpkin Pomeranian' '3' '#']
['Purple Puffin' '3' '#']
['Wisteria Wombat' '3' '#']

每个区域被分成物种,每个物种种群被加在一起。 这需要以一个 numpy 数组结尾。

编辑 我得到了按物种和地区排序的数组。现在我只需要知道如何按每个物种将每个区域的“个体数”相加。

Link to full numpy data set

【问题讨论】:

    标签: python arrays numpy numpy-ndarray


    【解决方案1】:

    您可以使用np.uniquenp.bincount

    >>> inp
    array([['Purple Puffin', '1', '1'],
           ['Wisteria Wombat', '3', '4'],
           ['Pumpkin Pomeranian', '1', '3'],
           ['Wisteria Wombat', '2', '3'],
           ['Burgundy Bichon Frise', '2', '1'],
           ['Purple Puffin', '1', '4'],
           ['Wisteria Wombat', '2', '2'],
           ['Pumpkin Pomeranian', '1', '2']], dtype='<U21')
    >>> unq, inv = np.unique(inp[:, 1::-1], axis=0, return_inverse=True)
    >>> cnt = np.bincount(inv, inp[:, 2].astype(int)).astype(int)
    >>> res = np.c_[unq[:, ::-1], cnt]
    >>> res
    array([['Pumpkin Pomeranian', '1', '5'],
           ['Purple Puffin', '1', '5'],
           ['Burgundy Bichon Frise', '2', '1'],
           ['Wisteria Wombat', '2', '5'],
           ['Wisteria Wombat', '3', '4']], dtype='<U21')
    

    【讨论】:

      猜你喜欢
      • 2014-11-10
      • 2017-11-29
      • 2014-01-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-18
      • 1970-01-01
      • 2021-04-22
      相关资源
      最近更新 更多