Python numpy-修改遮罩的切片?

Python numpy-修改遮罩的切片?,python,numpy,Python,Numpy,如果我在numpy中有一个三维矩阵,并且只想使用切片来更改某个维度的某些值,这是可能的吗?这就是我所拥有的,但在运行代码后,这些值不会被修改: import numpy as np from scipy import misc image_matrix_data = misc.imread('./some-image.jpg') image_mask = image_matrix_data[:, : ,0] < 150 image_matrix_data[image_mask][:,

如果我在numpy中有一个三维矩阵,并且只想使用切片来更改某个维度的某些值,这是可能的吗?这就是我所拥有的,但在运行代码后,这些值不会被修改:

import numpy as np
from scipy import misc

image_matrix_data = misc.imread('./some-image.jpg')
image_mask   = image_matrix_data[:, : ,0] < 150
image_matrix_data[image_mask][:,0] = 0

# expected to get a matrix where several of the values in 
# image_matrix_data[:, :, 0] are now 0, but not happening

我遗漏了什么吗?

以上Divakar的回答:

import numpy as np
from scipy import misc

image_matrix_data = misc.imread('./some-image.jpg')
image_mask   = image_matrix_data[:, : ,0] < 150
image_matrix_data[image_mask, 0] = 0

布尔掩码生成一个副本,因此对切片的任何更改都会修改该副本,而不是修改原始数组。data[mask]=0之所以有效,是因为=紧跟在高级索引之后。您可以使用:image\u matrix\u data[image\u mask,0]=0。谢谢@Divakar,这很有帮助。