[英]How to create a 2D mesh with refinement? Python
我怎樣才能創建一個細化的網格,假設x和y在兩個方向上都從0到1且在0.4和0.6之間,我希望這些點更接近。
我一直在閱讀有關numpy.logspace的信息,但它沒有太多的自由。
有任何想法嗎?
此功能沒有一個特定的命令,但是您可以使用numpy.concatenate
來建立數組:
import numpy
start = 0
end = 1
bigstep = 0.1
refinedstart = 0.4
refinedend = 0.6
smallstep = 0.01
x = numpy.concatenate([numpy.arange(start, refinedstart, bigstep),
numpy.arange(refinedstart, refinedend, smallstep),
numpy.arange(refinedend, end, bigstep)])
這取決於您要如何“壓縮”中間值。 但是說您想二次使用每個軸上從-10到10的11 x 11網格來做:
a = np.linspace(-np.sqrt(10), np.sqrt(10), 11)
b = np.sign(a)*a**2
x, y = np.meshgrid(b, b)
要查看此網格是什么樣的:
import matplotlib.pyplot as plt
plt.plot(x.flatten(), y.flatten(), '*')
plt.show()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.