簡體   English   中英

如何創建具有細化效果的2D網格? 蟒蛇

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM