在 Python 中重复行和列
Repeating rows and columns in Python
我正在尝试制作两个 600x800 矩阵(X
和 Y
),如下所示:
- X
每行有 0 到 600
- Y
每列有 800 到 0
我的想法是按照这些思路做一些事情:
N = np.arange(0, 600, 1)
M = np.arange(0, 800, 1)
X = np.zeros((800, 600))
Y = np.zeros((800, 600))
从这里开始,将 N
放入 X
的每一行,并将 M[::-1]
放入 Y
的每一列,但我不确定如何开始吧。
你很幸运,因为 NumPy 在 np.meshgrid
-
中有一个内置的任务
X,Y = np.meshgrid(N,M[::-1])
样本运行-
In [2]: N
Out[2]: array([0, 1, 2, 3, 4, 5])
In [3]: M
Out[3]: array([0, 1, 2, 3, 4, 5, 6, 7])
In [4]: X,Y = np.meshgrid(N,M[::-1])
In [5]: X
Out[5]:
array([[0, 1, 2, 3, 4, 5],
[0, 1, 2, 3, 4, 5],
[0, 1, 2, 3, 4, 5],
[0, 1, 2, 3, 4, 5],
[0, 1, 2, 3, 4, 5],
[0, 1, 2, 3, 4, 5],
[0, 1, 2, 3, 4, 5],
[0, 1, 2, 3, 4, 5]])
In [6]: Y
Out[6]:
array([[7, 7, 7, 7, 7, 7],
[6, 6, 6, 6, 6, 6],
[5, 5, 5, 5, 5, 5],
[4, 4, 4, 4, 4, 4],
[3, 3, 3, 3, 3, 3],
[2, 2, 2, 2, 2, 2],
[1, 1, 1, 1, 1, 1],
[0, 0, 0, 0, 0, 0]])
由于问题也用 NumPy broadcasting
标记,我会在用零初始化后添加另一种使用它的方法(如问题中所列),就像这样 -
m,n = M.size, N.size # Size parameters
X = np.zeros((m,n),dtype=N.dtype)
Y = np.zeros((m,n),dtype=M.dtype)
X += N
Y += M[::-1,None]
我正在尝试制作两个 600x800 矩阵(X
和 Y
),如下所示:
- X
每行有 0 到 600
- Y
每列有 800 到 0
我的想法是按照这些思路做一些事情:
N = np.arange(0, 600, 1)
M = np.arange(0, 800, 1)
X = np.zeros((800, 600))
Y = np.zeros((800, 600))
从这里开始,将 N
放入 X
的每一行,并将 M[::-1]
放入 Y
的每一列,但我不确定如何开始吧。
你很幸运,因为 NumPy 在 np.meshgrid
-
X,Y = np.meshgrid(N,M[::-1])
样本运行-
In [2]: N
Out[2]: array([0, 1, 2, 3, 4, 5])
In [3]: M
Out[3]: array([0, 1, 2, 3, 4, 5, 6, 7])
In [4]: X,Y = np.meshgrid(N,M[::-1])
In [5]: X
Out[5]:
array([[0, 1, 2, 3, 4, 5],
[0, 1, 2, 3, 4, 5],
[0, 1, 2, 3, 4, 5],
[0, 1, 2, 3, 4, 5],
[0, 1, 2, 3, 4, 5],
[0, 1, 2, 3, 4, 5],
[0, 1, 2, 3, 4, 5],
[0, 1, 2, 3, 4, 5]])
In [6]: Y
Out[6]:
array([[7, 7, 7, 7, 7, 7],
[6, 6, 6, 6, 6, 6],
[5, 5, 5, 5, 5, 5],
[4, 4, 4, 4, 4, 4],
[3, 3, 3, 3, 3, 3],
[2, 2, 2, 2, 2, 2],
[1, 1, 1, 1, 1, 1],
[0, 0, 0, 0, 0, 0]])
由于问题也用 NumPy broadcasting
标记,我会在用零初始化后添加另一种使用它的方法(如问题中所列),就像这样 -
m,n = M.size, N.size # Size parameters
X = np.zeros((m,n),dtype=N.dtype)
Y = np.zeros((m,n),dtype=M.dtype)
X += N
Y += M[::-1,None]