如何将二维数组分配给较大二维数组的切片?

2024-04-28 02:38:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个100x100阵列和另一个50x50阵列。如何将整个50x50阵列分配给较大阵列的一部分


3条回答

示例:

x = zeros((50, 50))
y = ones((100, 100))
x[0:50, 0:50] = y[20:70, 40:90]  # x should now be all 1s

如果你的“数组”是一个二维的列表,那么用一个简单的语句就不可能做到这一点(你可以创建一个列表,但我认为它是不可读的),这个解决方案迭代较小的列表,一次替换一行/片。下面假设“切片”适合较大的数组。您应该为此添加检查,否则当您尝试在较大数组的限制之外写入时,将得到IndexError

def replace_2d_list_slice(larger_list, smaller_list, row_start, column_start):
    for i, row in enumerate(smaller_list, start=row_start):
        larger_list[i][column_start:column_start + len(row)] = row

replace_2d_list_slice(larger_list, smaller_list, 10, 10)

试试这个:

larger[:50, :50] = smaller

它将整个smaller数组分配给larger数组的一个片。你知道吗

相关问题 更多 >