【问题标题】:How do I do conditional array arithmetic on a numpy array?如何对 numpy 数组进行条件数组运算?
【发布时间】:2011-03-25 11:13:28
【问题描述】:

我正在尝试更好地掌握 numpy 数组,所以我有一个示例问题要问:

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

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

我想回来:

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

最简洁的语法是什么?

谢谢!

【问题讨论】:

标签: python numpy


【解决方案1】:
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])

【讨论】:

    【解决方案2】:

    改变它:

    a[a<0] += 1
    

    保留原始数组:

    a+[a<0]
    

    【讨论】:

      【解决方案3】:

      只是添加到上面,在 numpy 数组中,我想根据 ascii 值减去一个值,以获得 ascii 0-9 和 AZ 的 0 到 35 之间的值,并且必须编写 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
      

      【讨论】:

        猜你喜欢
        • 2021-03-08
        • 1970-01-01
        • 2022-10-13
        • 2017-04-17
        • 1970-01-01
        • 2014-05-27
        • 2010-10-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多