我在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
x
和y
参数在以下各项中做什么:z
?
答案 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个元素,因此x
,x+2
,x+4
等,直到最接近x+2n
的{{1}})
因此y
表示步幅为::z
的所有元素(或从z
开始的每个第二元素为::2
)
您需要对数组的每个“维度”执行此操作,因此对于2d,您将需要0
来遍历整个数据,在行上[::z1,::z2]
,在行上z1
列。
如果仍然不清楚,请在评论中指定不清楚的地方。
最后一个澄清-当您仅键入z2
时,您隐式告诉python :
,而对0:len(array)
的含义相同,这意味着::z
。
并且如果您只键入0:len(array):z
,则表示它与::
相同(尽管我没有深入研究此特定示例)