Не могу обратиться к элементу матрицы для добавления её в массив python

 # В матрице найти отрицательные элементы, сформировать из них новый массив.
 # Вывести размер полученного массива
 import random as rnd
 import numpy as np

 n = 0
 i = 0
 arr1 = np.matrix([[rnd.randrange(-2, 5), rnd.randrange(-2, 5)],
                  [rnd.randrange(-2, 5), rnd.randrange(-2, 5)]])
 result = []
 for n in range(2):
     for i in range(2):
         if arr1[[n], [i]] < 0:
             result = [result.append(arr1[[n], [i]])]

 print(result)

Ответы (1 шт):

Автор решения: CrazyElf

Как говорится "да тут всю систему надо менять!" Правильная работа с Numpy будет выглядеть примерно так:

import numpy as np

arr1 = np.random.randint(-2, 5, (2, 2))
print(arr1)

result = arr1[arr1 < 0]
print(*result.shape)

Пример вывода:

[[-1  1]
 [-1  4]]
2

Что касается вашего кода:

  • модуль random не нужен, вы можете получить случайную матрицу с помощью самого numpy гораздо проще и быстрее
  • метод matrix устарел, используйте универсальный array
  • в numpy циклы обычно не нужны, можно сразу все элементы проверить на нужное условие и выбрать их
  • метод списка append возвращает None, не нужно этот None присваивать обратно в список (да и список тут вообще не нужен)
→ Ссылка