【问题标题】:How to assign a 2d array to a slice of a larger 2d? [closed]如何将二维数组分配给更大的二维切片? [关闭]
【发布时间】:2020-01-04 04:45:42
【问题描述】:

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

【问题讨论】:

  • 什么类型的数组?
  • 欢迎来到 SO!您能否详细说明您使用的是什么阵列?另外,到目前为止,您尝试过什么?另外,请看一下 - stackoverflow.com/help/how-to-ask
  • 这是numpy 的问题吗?

标签: python multidimensional-array slice


【解决方案1】:

试试这个:

larger[:50, :50] = smaller

它将整个smaller 数组分配给larger 数组的一个切片。

【讨论】:

    【解决方案2】:

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

    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)
    

    【讨论】:

      【解决方案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
      

      【讨论】:

      • OP 想要将较小的数组分配给较大数组的一部分。
      • @wwii“将整个 50x50 数组分配给较大数组的一个切片”在我看来就像“我想将 50x50 数组中的每个值分配给从较大数组的切片中获取的值。 "请不要仅仅因为这个人以一种允许多种解释的模糊方式表达他们的问题而对我投反对票
      猜你喜欢
      • 1970-01-01
      • 2018-07-30
      • 2018-05-06
      • 1970-01-01
      • 1970-01-01
      • 2020-08-03
      • 1970-01-01
      相关资源
      最近更新 更多