我正在尝试创建一个周期性正方形的numpy数组,这样当我使用plt.imshow时,我会看到一个带有周期性白色方块的黑色正方形。稍后需要使用该阵列进行傅立叶分析。 imshow参考仅用于问题的可视化。
我可以创建黑色数组和单个白色方块,但我遇到的问题是每次迭代都会覆盖最后一次,直到我只留下最后一个白色方块。
代码:
import numpy as np
import matplotlib.pyplot as plt
N = 500
x_wid = 10
y_wid = 10
grid = np.arange(1,N)
X_GRID, Y_GRID = np.meshgrid(grid, grid)
square = np.zeros([N, N])
for x_pos in np.arange(0, N, N/10):
for y_pos in np.arange(0, N, N/10):
square = np.logical_and((np.abs(X_GRID-x_pos) < x_wid/2),
(np.abs(Y_GRID-y_pos) < y_wid/2))
plt.imshow(square, cmap="gray")
plt.show()
答案 0 :(得分:0)
原始网格的大小需要为N grid = np.arange(0,N)
。然后,这将与square
具有相同的大小,从而允许在for循环中使用简单的+=
来追加&#39;每次迭代。
代码:
import numpy as np
import matplotlib.pyplot as plt
N = 500
x_wid = 10
y_wid = 10
grid = np.arange(0,N)
X_GRID, Y_GRID = np.meshgrid(grid, grid)
square = np.zeros([N, N])
final_square = np.zeros([N, N])
for x_pos in np.arange(0, N, N/10):
for y_pos in np.arange(0, N, N/10):
square = np.logical_and((np.abs(X_GRID-x_pos) < x_wid/2),
(np.abs(Y_GRID-y_pos) < y_wid/2))
final_square += square
plt.imshow(final_square, cmap="gray")
plt.show()