如何用NumPy一维数组结合布尔掩码按行/列填充ndarray?
用NumPy实现按行/列填充掩码对应值
首先给出基础代码:
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])
按行填充
直接利用布尔索引完成赋值:mask每行对应一个True位置,X[mask]会提取所有True位置的元素(形状与values一致),直接赋值即可得到目标结果。
X_row = X.copy() X_row[mask] = values print(X_row) # 输出: # [[ 1 2 20] # [ 4 30 6]]
按列填充
通过转置数组和掩码来实现按列顺序的填充:转置后,原数组的列变为行,此时用转置后的掩码进行布尔索引赋值,最后再转置回原形状,即可得到按列填充的结果。
X_col = X.copy() X_col.T[mask.T] = values print(X_col) # 输出: # [[ 1 2 30] # [ 4 20 6]]
内容的提问来源于stack exchange,提问作者wueb
相关产品推荐
相关产品推荐

