>>> timeit.timeit(stmt='(A == B).all()', setup='import numpy; A, B = numpy.zeros((1000,)), numpy.zeros((1000,))', number=10_000_000)
20.43348090001382
>>> timeit.timeit(stmt='numpy.array_equal(A, B)', setup='import numpy; A, B = numpy.zeros((1000,)), numpy.zeros((1000,))', number=10_000_000)
27.85776079981588
>>>return builtins.bool((a1 == a2).all())image = cv2.imread("image.png")
image = image.astype(numpy.uint32)  # смена типа нужна, иначе при сдвиге потеряются разряды
image_clone = (image[..., 0] << 16) | (image[..., 1] << 8) | image[..., 2]image = cv2.imread("image.png")
image_clone = numpy.zeros(image.shape[:2], numpy.uint32)
# краткие формы операций не создают новый массив, а изменяют существующий по месту
image_clone |= image[..., 0]
image_clone <<= 8
image_clone |= image[..., 1]
image_clone <<= 8
image_clone |= image[..., 2]for a in self.weights a будет не индексами, а элементами списка. В твоём случае - массивами numpy. Аналогичноfor b in a: будет не индексами строк массива, а самими строкамиfor c in b: будет не индексами столбцов, а значениями ячеек. Так что self.weights[a][b][c] получит вместо чисел-индексов массивы и сойдёт с ума.x = np.randint(-1000, 1000, size = (2, 3), dtype=np.float32)  # массив случайных чисел, две строки, три столбца
x /= 100.0  # делим поэлементно на стоarea = matrix_new[100:200, 100:200]  # это делает ссылку на область массива, а не копию области!
area[area == 250] = 255  # так что когда мы изменяем эту область, оригинал изменится.im = Image.open('IMG_7760.JPG')
a = np.asarray(im) # a - трёхмерный массив numpy (высота; ширина; каналы)
for bb in a: # перебираешь элементы по первому индексу (высоте), т.е. строки изображения
    np.random.random((1,1,1)) * a #умножаешь каждый элемент (кортеж RGB) строки на одно и то же случайное число
    #и всё. Полученное произведение выбрасывается за ненадобностью. Оригинальное значение ты не заменяешь ведь.
    im = Image.fromarray(bb) #*строку* превращаешь в объект PIL.Image
    im.save('2222.JPG') #и сохраняешь этот объект в файл
    print(bb) #и выводишь на экран(a == [2,0,2]).all(axis=2)>>> a = np.array([[[1, 0, 0], [2, 0, 1], [2, 0, 2]], [[0, 0, 0], [2, 0, 3], [0, 0, 0]]])
>>> a == [2,0,2]
array([[[False,  True, False],
        [ True,  True, False],
        [ True,  True,  True]],
       [[False,  True, False],
        [ True,  True, False],
        [False,  True, False]]])
>>> (a == [2,0,2]).all(axis=2)
array([[False, False,  True],
       [False, False, False]])