Как использовать условные операторы или циклы для выполнения моего требования? - PullRequest
0 голосов
/ 21 мая 2019

Я новичок в программировании на Python. Пожалуйста, помогите мне выполнить мое требование.

Предположим, есть два массива 'a' и 'b' размера 3 * 4

a = [[1,0,0,1],
     [0,0,1,1],
     [1,0,0,1]]

b = [[12,-34,-10,4],
     [2,11,-12,20],
     [-12,16,19,-9]]

Здесь, если b[i,j]<10, то я хочу, чтобы соответствующий a[i,j] был таким же (т. Е. Это может быть 0 или 1), иначе измените элемент a[i,j] на 1.

Ожидаемый результат для приведенного выше примера:

c = [[1,0,0,1],
     [0,1,1,1],
     [1,1,1,1]]

Ответы [ 2 ]

4 голосов
/ 21 мая 2019

Вы можете использовать оператор или |:

In [11]: b >= 10
Out[11]:
array([[ True, False, False, False],
       [False,  True, False,  True],
       [False,  True,  True, False]])

In [12]: a | (b >= 10)
Out[12]:
array([[1, 0, 0, 1],
       [0, 1, 1, 1],
       [1, 1, 1, 1]])

| является побитовым или эквивалентным np.bitwise_or :

In [13]: np.bitwise_or(a, b >= 10)
Out[13]:
array([[1, 0, 0, 1],
       [0, 1, 1, 1],
       [1, 1, 1, 1]])

Предполагается, что и a, и b являются массивами-пустышками, это можно сделать с помощью конструктора массива:

a, b = np.array(a), np.array(b)
0 голосов
/ 21 мая 2019

если вы не хотите использовать numpy, вы можете сделать это для понимания вложенного списка:

c = [[el_a | (el_b >= 10) for el_a, el_b in zip(row_a, row_b)] 
      for row_a, row_b in zip(a, b)]

но я предпочитаю Энси Хейдена ансер . NumPy действительно сияет для такого рода операций.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...