numpy数组切片后能否将对应位置赋值为等长的另一numpy数组
numpy数组切片赋值可行性说明
这个写法是否可以正常运行,核心取决于两个维度匹配条件是否满足:
valid_subset_indices的长度必须和numpy_arr_B的第三维度长度完全相等numpy_arr_B的前两个维度的尺寸必须和numpy_arr_A的前两个维度完全一致,也就是numpy_arr_B.shape == (A.shape[0], A.shape[1], len(valid_subset_indices))
只要满足以上两个条件,赋值操作就可以正常执行:numpy会自动把numpy_arr_B的每一个元素,对应写入numpy_arr_A第三维度被valid_subset_indices选中的位置,其余未被选中的位置会保留初始化的0值。
举个可运行的示例参考:
import numpy as np # 模拟场景参数 A = np.ones((2, 3)) some_valid_length = 5 valid_subset_indices = [0, 2, 4] numpy_arr_B = np.ones((2, 3, 3)) # 初始化目标数组 numpy_arr_A = np.zeros((A.shape[0], A.shape[1], some_valid_length)) # 切片赋值操作 numpy_arr_A[:, :, valid_subset_indices] = numpy_arr_B
如果维度不匹配,会直接抛出ValueError。比如numpy_arr_B第三维度长度和valid_subset_indices长度不一致,或者前两维度和numpy_arr_A前两维度不匹配,都会触发报错。
内容的提问来源于stack exchange,提问作者balloonpandatree
相关产品推荐
相关产品推荐

