Python 在绘制一个包含3个变量的函数时,如何使用非常大的数组来处理MemoryError消息?

Python 在绘制一个包含3个变量的函数时,如何使用非常大的数组来处理MemoryError消息?,python,arrays,python-3.x,numpy,matplotlib,Python,Arrays,Python 3.x,Numpy,Matplotlib,让我们假设F(x1,x2,x3)是三个自变量x1,x2和x3的函数,它们以一维数组的形式给出。我想为x3的一些值绘制F(利用等高线类)。以下是我的代码片段(除非另有说明,否则我认为这就是错误产生的原因),包括: N = 10000 data1 = [random.uniform(-1, 1) for i in range(N)] vx = ar(data1) data2 = [random.uniform(-1, 1) for i in range(N)] vy = ar(data2) data

让我们假设F(x1,x2,x3)是三个自变量x1,x2和x3的函数,它们以一维数组的形式给出。我想为x3的一些值绘制F(利用等高线类)。以下是我的代码片段(除非另有说明,否则我认为这就是错误产生的原因),包括:

N = 10000
data1 = [random.uniform(-1, 1) for i in range(N)]
vx = ar(data1)
data2 = [random.uniform(-1, 1) for i in range(N)]
vy = ar(data2)
data2 = [random.uniform(-1, 1) for i in range(N)]
vz = ar(data2)

def P(vx, vy, vz):
        y1 = .... # some function of vx
        y2 = .... # some function of vy
        y3 = .... # some function of vz
        return y1 * y2 * y3

X, Y = np.meshgrid(vx, vy)
vz_vals = [-1, -0.5, -0.1, 0, 0.1, 0.5, 1]
num_subplots = len(vz_vals)

fig = pyplot.figure(figsize=(10, 4))
for i,vz in enumerate(vz_vals) :
    ax = fig.add_subplot(1, num_subplots, i + 1, projection='3d', axisbg='gray')
    ax.contourf(X, Y, P(X, Y, vz), cmap = cm.gnuplot)
    ax.set_title('vz = %.2f' % vz, fontsize = 30)
fig.savefig('myfigure.png', facecolor='grey', edgecolor='none')
当我将代码更改为以下内容时,问题解决了,但现在我的“内存”有问题,我不知道如何处理它,因为我不允许发布新问题,我希望有人能看到问题。谢谢你的关心

N = 10000
vx = [random.uniform(-1, 1) for i in range(N)]
vy = [random.uniform(-1, 1) for i in range(N)]
vz = [random.uniform(-1, 1) for i in range(N)]

def P(vx, vy, vz):
        y1 = .... # some function of vx
        y2 = .... # some function of vy
        y3 = .... # some function of vz
        return y1 * y2 * y3

X, Y = np.meshgrid(vx, vy)
vz_vals = [-1, -0.5, -0.1, 0, 0.1, 0.5, 1]
num_subplots = len(vz_vals)

fig = pyplot.figure(figsize = (10, 4))
for i, vz in enumerate(vz_vals):
      ax = fig.add_subplot(1, num_subplots, i+1, projection = '3d', axisbg = 'gray')
      ax.contour(X, Y, P(X, Y, vz), camp = cm.gnuplot)
      ax.set_title('vz = %.2f'% vz, fontsize = 30)
fig.savefig('myfigure.png', facecolor = 'grey', edgecolor = 'none')
新错误消息:

回溯(最近一次调用last):文件“example.py”,第11行,在 等高线(X,Y,P(X,Y,vz),camp=cm.gnuplot)文件“example.py”,第2行,在P中 高斯1=。。。。记忆者


为了调用
np.meshgrid[x1,x2]
您需要使用圆括号,如
np.meshgrid(x1,x2)

您使用的是
[]
而不是
()
。您是否查看了
np.meshgrid
调用错误消息指向的地方?实际上对于[]和(),它都给出了错误。[]的“TypeError:“function”对象不可下标”和“TypeError:Input z必须是()”的2D数组。
F()
使用的是自初始化以来从未更改过的
y1、y2、y3
,而不是它的输入
x1、x2、x3
,这是故意的吗?函数F()实际上是一个非常复杂的函数。所以,所有三个y都是x1,x2,x3的函数,我只是让它们更结构化,把它们分解成小块。所以,y是中间函数。我所说的x1,x2和x3实际上是指三个空间维度。但我的F恰好是y的一个复杂函数,而y的函数本身就是x的函数。要要求澄清一个问题,请将您的反馈作为评论,而不是回答。对不起,亲爱的Tadhg,没有留下“正在解决”的记号。我早就该这样做了。我想这就是我获得负面评论的原因。感谢TigerhawkT3的评论。我想我应该更仔细地遵守规则。你认为这就是我的账户被冻结的原因吗?希望不会。