【发布时间】:2020-03-20 02:34:26
【问题描述】:
大家好,这里的第一个问题,正在寻找答案但找不到任何东西,我会尽力而为。
我目前正在研究计算物理领域的一个问题,我正在使用有限差分法对 Navier-Stokes 方程进行数值求解。这是我第一次使用 Python(使用带有 Python 3 的 Google Colaboratory notebook)。我正在求解二维平面中的点网格的方程。我创建了这个网格使用 np.arrays
import numpy as np
import matplotlib.pyplot as plt
N = 10
data = np.zeros((N,N))
然后对其进行操作。例如
for i in range(N):
for j in range(N):
data[i,j] = i
这使得数组的值随着索引i 而增加。但是,如果我现在使用
x = np.arange(N)
y = np.arange(N)
plt.contourf(x, y, data)
plt.colorbar()
示例结果:
它表明绘制的数据沿 y 轴增加,即使我对数组的操作应该使其沿 x 轴增加。
我注意到发生这种情况是因为数组 (i,j) 的索引与 x 轴和 y 轴的标准方向不同,但是我怎样才能像 i=x 和 j=y 一样绘制我的数据数组?
【问题讨论】:
-
你通过
a.T得到一个numpy 数组a的转置。也许请注意,numpy 索引与数学矩阵表示法一致,第一维是行,第二维是列。所以也许当你开始做这一切的时候,考虑一下采用这个标准。 -
跟进该评论。在您的情况下,您将拥有
plt.contourf(x,y,data.T)尽管我也鼓励您查看pcolormesh 和imshow
标签: python numpy matplotlib numpy-ndarray