Python用矩阵的'circle'替换矩阵中的零

时间:2014-05-15 01:09:00

标签: python numpy

我可以创建一个大的零矩阵,并用矩阵区域替换矩形区域:

import numpy as np

z = np.zeros((400,400))
z[192:206,196:202] = 1

如何用矩阵替换矩阵中的圆形区域?圆的半径可以任意大。

1 个答案:

答案 0 :(得分:1)

这是一种执行所要求的方法,指定圆心和半径:

import numpy as np
import matplotlib.pyplot as plt
z = np.zeros((400,400))

# specify circle parameters: centre ij and radius
ci,cj=232,145
cr=20

# Create index arrays to z
I,J=np.meshgrid(np.arange(z.shape[0]),np.arange(z.shape[1]))

# calculate distance of all points to centre
dist=np.sqrt((I-ci)**2+(J-cj)**2)

# Assign value of 1 to those points where dist<cr:
z[np.where(dist<cr)]=1

# show result in a simple plot
fig=plt.figure()
ax=fig.add_subplot(111)
ax.pcolormesh(z)
ax.set_aspect('equal')
plt.show()

我使用ax.set_aspect('equal')来表明它确实是一个圆形区域。我留下其他方面,比如检查圈子是否完全在域的范围内,由你决定。