【问题标题】:Operation vectorization in numpynumpy 中的操作向量化
【发布时间】:2018-11-15 03:42:24
【问题描述】:

我得到了一个 numpy 日期数组(日期是从 0 到 371 的数字)。

dates = [234, 12, 343, ...]

和空数组date_counter(大小为372)。

date_counter = [0, 0, ..., 0]

对于来自dates 的每个日期,我想增加date_counter。如何使这个操作矢量化?

【问题讨论】:

    标签: numpy vectorization


    【解决方案1】:

    计算 value 的出现次数,然后更新日期计数器。

    例如,要获得增量:

    unique, counts = np.unique(dates, return_counts=True)
    

    然后:

    date_counter[unique] += counts
    

    【讨论】:

      【解决方案2】:

      我认为np.histogram 是你的朋友。它完全符合您的要求:计算项目并将它们放入“桶”中。一个较小的(人类可读的)示例:

      In [9]: vals = [9, 0, 1, 2, 2, 9, 3, 7, 8, 9, 9]
      
      In [10]: date_counter, _ = np.histogram(vals, bins=np.arange(11)) # 11 -> 373 for your case
      
      In [11]: date_counter
      Out[11]: array([1, 1, 2, 1, 0, 0, 0, 1, 1, 4], dtype=int64)
      

      每个索引对应与该索引值相等的项目数(即date_counter中的最后一个数字是4,位于索引9,意味着有四个9s)为想要的。

      HTH。

      【讨论】:

      • 他没有说dates的大小是372。至少bins必须等于np.arange(373)
      • @VadimShkaberda 哦,是的,那是个错误,很好!输入数组的大小无关紧要,重要的是您想要多少个 bin。在 OP 的情况下,它将是 373。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-05-31
      • 2015-07-05
      • 1970-01-01
      • 1970-01-01
      • 2011-08-12
      • 2022-11-20
      • 1970-01-01
      相关资源
      最近更新 更多