【问题标题】:Numpy operation of arrays with different size不同大小数组的numpy操作
【发布时间】:2016-02-20 10:41:11
【问题描述】:
c=np.array([ 0.  ,  0.2,  0.22,  0.89,  0.99])
rnd = np.random.uniform(low=0.00, high=1.00, size=12)

我想看看 c 中有多少元素小于 rnd 中的 12 个随机数。它需要在 numpy 中并且不使用任何列表,以便更快。

输出将是一个由 12 个元素组成的数组,每个元素描述每个元素有多少个元素小于 rnd 中的相应数字。

【问题讨论】:

  • 请用预期输出示例编辑您的问题

标签: python arrays performance numpy


【解决方案1】:

在将 c1D 扩展到 2D 数组版本后,您可以使用 broadcasting None/np.newaxis 以矢量化方式对所有元素进行比较,然后将行与 .sum(0) 相加数数,像这样 -

(c[:,None] < rnd).sum(0)

看来你也可以像这样使用高效的np.searchsorted -

np.searchsorted(c,rnd)

【讨论】:

  • 是的,看起来很棒。 “无”代表什么?
  • 好的,一个小问题。如果您的输出结果是原始 c 的索引,我怎样才能得到数字 = rnd[(c[:,None]
  • 结果是计数而不是索引。你到底有什么想法?我不认为我理解这个后续问题。你能详细说明一下吗?
  • 是的,然后计数将用作索引,您理解正确。事实上count-1
  • 是的,但是 c 有 5 个元素,而 count 有 12 个
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-31
  • 2018-07-15
  • 1970-01-01
相关资源
最近更新 更多