我想用python生成一个二维坐标矩阵。
我在用
x=np.linespace(min, max, step)
y=np.linespace(min, max, step)
X, Y = np.meshgrid(x, y)
以生成x和y坐标,其中X为:
[[0. 1. 2. 3. 4.]
[0. 1. 2. 3. 4.]
[0. 1. 2. 3. 4.]
[0. 1. 2. 3. 4.]
[0. 1. 2. 3. 4.]
[0. 1. 2. 3. 4.]
[0. 1. 2. 3. 4.]
[0. 1. 2. 3. 4.]]
并且Y像:
[[-2. -2. -2. -2. -2.]
[-1. -1. -1. -1. -1.]
[ 0. 0. 0. 0. 0.]
[ 1. 1. 1. 1. 1.]
[ 2. 2. 2. 2. 2.]
[ 3. 3. 3. 3. 3.]
[ 4. 4. 4. 4. 4.]
[ 5. 5. 5. 5. 5.]]
我想得到:
[[[0, -2] [0, -1] [0, 0] [0, 1] [0, 2]]
[[1, -2] [1, -1] [1, 0] [1, 1] [1, 2]]
[[2, -2] [2, -1] [2, 0] [2, 1] [2, 2]]
[[3, -2] [3, -1] [3, 0] [3, 1] [3, 2]]
[[4, -2] [4, -1] [4, 0] [4, 1] [4, 2]]]
(or它的水平镜子)怎么做?
2条答案
按热度按时间ghhkc1vu1#
你可以使用
np.stack
(np.concatenate
的变体)来连接这两个数组-在任何轴上。np.stack((X,Y),axis=0)
像np.array((X,Y))
一样将在一个新的前导维度(2,8,6)形状上连接它们。但显然你认为一个新的尾随维度是最好的,所以它需要axis=2
。您的
X
和Y
显然是通过以下命令生成的:这是两个(8,6)数组。示例输出是(5,5),但布局看起来像是(6,8,2)数组的一部分,需要转置:
事实上,你可以在第一个轴上连接它们,然后转置:
无论如何,如果你不喜欢这个形状,你可以随意修改输入数组和
axis
。biswetbf2#
你可以这样实现:
我切换到
np.arange
而不是np.linspace
。