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

时间:2010-08-04 19:47:13

标签: python numpy

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

说我有一个名为a的numpy数组。我想在一个操作上执行一个操作,使其中的所有值递增,小于0,其余部分单独留下。例如,如果我有:

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

我想回复:

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

最简洁的语法是什么?

谢谢!

3 个答案:

答案 0 :(得分:30)

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])

答案 1 :(得分:10)

改变它:

a[a<0] += 1

单独保留原始数组:

a+[a<0]

答案 2 :(得分:0)

仅需添加到上面,在numpy数组中,我想基于ascii值减去一个值,以获取介于0到35之间的ascii 0-9和AZ值,并且不得不编写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