如何将函数应用于某些数组元素?

Pau*_*nta 5 python indexing numpy

我有一个数组x,我想将一个函数f应用于矩阵中满足某些条件的每个项目.Numpy是否提供了一种简化机制的机制?

这是一个例子.我的矩阵x应该只包含独占范围内的元素(0, 1).但是,由于舍入误差,某些元素可能等于01.对于每一个元素x,这正是0我想补充epsilon并为每个正是元素1我想减去epsilon.

编辑:(这个编辑是在我接受了askewchan的回答做出的.)另一种方法是使用numpy.clip.

ask*_*han 9

你可以这样做:

a = np.array([0,.1,.5,1])
epsilon = 1e-5
a[a==0] += epsilon
a[a==1] += -epsilon
Run Code Online (Sandbox Code Playgroud)

这个工作的原因是a==0返回一个布尔数组,就像ВалераГорбунов在他们的答案中提到的那样:

In : a==0
Out: array([True, False, False, False], dtype=bool)
Run Code Online (Sandbox Code Playgroud)

然后你使用该数组作为索引a,它暴露元素,True而不是在哪里False.你可以用它做很多事情,参见http://docs.scipy.org/doc/numpy/reference/arrays.indexing.html