了解Numpy中的切片语法吗?

时间:2019-02-10 05:11:03

标签: python numpy

我在Numpy中有一个x维矩阵。在此示例中,我将使用2x2数组。

np.array([[2, 2], [3,3]])

我将如何交替添加一些值的行和列,以便结果看起来像这样:

array([[2, x, 3, x],
       [x, x, x, x].
       [2, x, 3, x],
       [x, x, x, x]])

This answer首先说了一个有用的开始,就是说像b那样从矩阵a设置大小正确的目标矩阵a[::2] = b中的行,但是{{ 1}}使用切片语法,如何使它在列上起作用?

简而言之,::2 xy参数在以下各项中做什么:z

1 个答案:

答案 0 :(得分:1)

如果我正确理解您的要求,那么应该可以:

import numpy as np
a = np.array([[2,2],[3,3]])
b = np.zeros((len(a)*2,len(a)*2))
b[::2,::2]=a

这会将数组(此处称为a)中的值“插入”到第二行和第二列

编辑: 根据您最近的修改,希望此添加对您有所帮助:

x:y:z意味着您从元素x开始,并以y为步幅一直到y(不包括z本身)(例如2,因此每2个元素,因此xx+2x+4等,直到最接近x+2n的{​​{1}}) 因此y表示步幅为::z的所有元素(或从z开始的每个第二元素为::2

您需要对数组的每个“维度”执行此操作,因此对于2d,您将需要0来遍历整个数据,在行上[::z1,::z2],在行上z1列。

如果仍然不清楚,请在评论中指定不清楚的地方。

最后一个澄清-当您仅键入z2时,您隐式告诉python :,而对0:len(array)的含义相同,这意味着::z。 并且如果您只键入0:len(array):z,则表示它与::相同(尽管我没有深入研究此特定示例)