【问题标题】:How to make if else condition in python 2d array如何在 python 二维数组中创建 if else 条件
【发布时间】:2022-11-21 20:35:34
【问题描述】:

我有一个 shape(3,6) 的二维数组,然后我想创建一个条件来检查每个数组的值。 我的数据如下:

阵列([[ 1, 2, 3, 4, 5, 6], 7, 8, 9, 10, 11, 12], [13, 14, 15, 16, 17, 18]])

如果数组中的数字 < 10 则该值将为 0

我期望的结果

阵列([[ 0, 0, 0, 0, 0, 0], 0, 0, 0, 10, 11, 12], [13, 14, 15, 16, 17, 18]])

我创建的代码是这样的,但为什么它不能像我预期的那样工作

FCDataNew = []

a = [ [1,2,3,4,5,6], 
     [7,8,9,10,11,12], 
     [13,14,15,16,17,18]
     ]

a = np.array(a)

c = 0
c = np.array(c)

for i in range(len(a)):
  if a[i].all()<10:
    FCDataNew.append(c)
  else:
    FCDataNew.append(a[i])

FCDataNew = np.array(FCDataNew)
FCDataNew

【问题讨论】:

    标签: python


    【解决方案1】:

    如果要就地修改数组,请使用布尔索引:

    FCDataNew = np.array([[1,2,3,4,5,6],
                          [7,8,9,10,11,12],
                          [13,14,15,16,17,18],
                         ])
    
    FCDataNew[FCDataNew<10] = 0
    

    对于副本:

    out = np.where(FCDataNew<10, 0, FCDataNew)
    

    输出:

    array([[ 0,  0,  0,  0,  0,  0],
           [ 0,  0,  0, 10, 11, 12],
           [13, 14, 15, 16, 17, 18]])
    

    【讨论】:

    • FCDataNew = [] a = [ [1,2,3,4,5,6], [7,8,9,10,11,12], [13,14,15,16,17,18] ] a = np.array(a) c = 0 c = np.array(c) for i in range(len(a)): if a[i].all()<10: FCDataNew.append(c) else: FCDataNew .append(a[i]) FCDataNew = np.array(FCDataNew) out = np.where(FCDataNew<10, 0, FCDataNew)
    • 是这样的吗?
    • 不,只是我在答案中写的,不需要循环
    • 我明白了,那有用,谢谢
    • 但是如果我有负值怎么办?
    【解决方案2】:

    你可以只使用arr[arr &lt; 10] = 0

    【讨论】:

      猜你喜欢
      • 2018-10-02
      • 2014-11-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多