掩码返回值与掩码赋值的区别
首先来看一下代码, 在图像处理领域会经常用到
import numpy as np
arr = np.array([[1, 1, 1],
[2, 2, 2],
[3, 3, 3]])
bl = np.array([[True, False, True],
[False, True, False],
[True, True, False]])
arr3 = np.arange(0, 27).reshape(3, 3, 3)
print(arr3) # 打印原三维数组, 相当于二维数组每个元素位置兑换成一个列表,每个列表存三个元素
# [[[ 0 1 2] 1->[ 0 1 2]
# [ 3 4 5] 1->[ 3 4 5]
# [ 6 7 8]] 1->[ 6 7 8]
#
# [[ 9 10 11] 2->[ 9 10 11]
# [12 13 14] 2->[12 13 14]
# [15 16 17]] 2->[15 16 17]
#
# [[18 19 20] 3->[18 19 20]
# [21 22 23] 3->[21 22 23]
# [24 25 26]]] 3->[24 25 26]
print(arr3[bl]) # 掩码返回值,只保留True元素的位置
# [[ 0 1 2]
# [ 6 7 8]
# [12 13 14]
# [18 19 20]
# [21 22 23]]
arr3[bl] = [0, 0, 255] # 掩码赋值,True元素的位置换成[0, 0, 255], False的位置保留
print(arr3)
# [[[ 0 0 255]
# [ 3 4 5]
# [ 0 0 255]]
#
# [[ 9 10 11]
# [ 0 0 255]
# [ 15 16 17]]
#
# [[ 0 0 255]
# [ 0 0 255]
# [ 24 25 26]]]