【问题标题】:How do I replace values in numpy array? [duplicate]如何替换 numpy 数组中的值? [复制]
【发布时间】:2019-08-05 20:30:54
【问题描述】:

我想替换 np.array 中的元素,例如:

arr = np.array([4,5,6,7,3])

我想用给定值替换满足我条件的每个元素,例如 3

因此,我的预期输出是:

[91 94  6  7 92]

我尝试过这样的事情:

out = np.where(arr>4, randint(90, 99), arr)

但我有 2 个问题:
1) 我无法指定区间
2) 我无法获得 3 个随机数 - 但只有一个

【问题讨论】:

  • 你的尝试是什么?这种东西是 numpy 的面包和黄油,大多数教程都会介绍
  • 我对 numpy 不是很熟悉,但这看起来很简单。您能展示一下您的尝试吗?
  • 第二个答案解决你的问题
  • 使用这个:arr[np.argwhere((3<=arr)&(arr<=5))] = 99
  • @vlad 不需要np.argwherearr[(3 <= arr) & (arr <= 5)] = 99。 OP 现在决定将分配的值更改为某个随机数;即使关闭,问题仍在继续扩大

标签: python arrays numpy replace


【解决方案1】:

使用循环,很简单:

j=0
for i in arr:
    if(3<=i and i<=5)
        arr[j]=99
        j+=1

【讨论】:

  • 我虽然有一些内置功能......
  • 不,不要为此使用 python 循环。如果你这样做,你也可以使用 python 列表。这违背了数组的目的。 numpy 的重点在于能够对这类事情进行矢量化,并比常规 python 加速几个数量级。
  • 既不简单也不适合 numpy...
  • 你不会使用 explict 循环,并不意味着你根本不会使用它。
  • 不,但我宁愿我的循环在 C 代码中运行,该代码也可以在 GIL 下运行并且运行速度快几百倍。
猜你喜欢
  • 2013-09-11
  • 1970-01-01
  • 2018-01-25
  • 1970-01-01
  • 2021-02-01
  • 2019-09-26
  • 2012-05-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多