如何在 numpy 数组上进行条件数组算术?

问题描述 投票:0回答:3

我试图更好地掌握 numpy 数组,所以我有一个关于它们的示例问题:

假设我有一个名为 a 的 numpy 数组。我想对 a 执行一个操作,增加其中所有小于 0 的值,并保留其余值。例如,如果我有:

a = np.array([1,2,3,-1,-2,-3])

我想回来:

([1,2,3,0,-1,-2])

最紧凑的语法是什么?

谢谢!

python numpy
3个回答
41
投票
In [45]: a = np.array([1,2,3,-1,-2,-3])

In [46]: a[a<0]+=1

In [47]: a
Out[47]: array([ 1,  2,  3,  0, -1, -2])

12
投票

改变它:

a[a<0] += 1

保留原始数组:

a + (a<0)

0
投票

补充一下,在 numpy 数组中,我想根据 ascii 值减去一个值,以获得 0 到 35 之间的 ascii 0-9 和 A-Z 值,并且必须编写 for 循环,但上面的帖子向我展示了如何操作使其简短。所以我想把它贴在这里作为感谢上面的帖子。

下面的代码可以简短一点

i = 0
for y in y_train:
    if y < 58:
        y_train[i] = y_train[i]-48
    else :
        y_train[i] = y_train[i] - 55
    i += 1
i = 0
for y in y_test:
    if y < 58:
        y_test[i] = y_test[i]-48
    else :
        y_test[i] = y_test[i] - 55
    i += 1
# The shortened code is below
y_train[y_train < 58] -= 48
y_train[y_train > 64] -= 55

y_test[y_test < 58] -= 48
y_test[y_test > 64] -= 55
© www.soinside.com 2019 - 2024. All rights reserved.