【发布时间】:2019-11-21 20:04:07
【问题描述】:
我需要对一个 numpy 数组进行切片,以便获得一个对应于深绿色区域的数组: array
绿色区域是列和行中多个范围的交集。 我想到了类似的东西:
M[[1:3,5:7],[1:3,5:7]]=np.zeros(4,4)
但它不起作用。我怎样才能有效地做到这一点?
【问题讨论】:
-
你想要多少个矩阵作为结果?每个交叉点一个或一个将小块合并成一个?
-
单个矩阵,目的是获取切片并将其设置为零或其他值,就像我在代码示例中所做的那样
-
我会考虑使用熊猫数据框。正如您在Documentation 中看到的那样,您可以将可调用对象传递给 iloc 函数。有了这个,你可以支持自定义切片。
-
有了这个: M[starting_index:ending_index:step, starting_index:ending_index:step] 您可以选择内部矩阵的每个角,然后将它们堆叠在一起 例如:x[1:9:5, 1 :9:5] 将为您提供第 1 行和第 6 行,第 1 和第 6 列。对同一行的不同列执行相同操作,然后对接下来的行和列执行相同操作。最后将它们堆叠在一起,让您构建所需的矩阵。
-
@NicolaePetridean 绝对没有更有效的解决方案? Matlab 有一个等价物:M([1:2,5:6],[1:2,5:6])
标签: python arrays numpy numpy-slicing