>>> 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]])