使用1d数组和true/false值的掩码/索引填充numpy ndarray

oogrdqng  于 12个月前  发布在  其他
关注(0)|答案(1)|浏览(107)

假设我有以下内容:

import numpy as np
X = np.array([[1, 2, 3], [4, 5, 6]])
mask = np.array([[False, False, True], [False, True, False]])
values = np.array([20, 30])

我想填写20和30的值,其中掩码是真正的行方式,所以结果是:[[1,2,20],[4,30,6]]。
另外,我如何填写向量列,所以结果是:[[1,2,30],[4,20,6]]。
只有numpy我该怎么做?

gojuced7

gojuced71#

X[mask] = values。当X.shape == mask.shape and len(values) == mask.sum()
输出量:

array([[ 1,  2, 20],
       [ 4, 30,  6]])

对于问题的第二部分,您可以转置X和掩码以进行计算:

X.T[mask.T] = values

输出量:

array([[ 1,  2, 30],
       [ 4, 20,  6]])

参见numpy documentation

相关问题