Спасибо за помощь @Bazingaa. В конце концов я выбрал самое глупое из возможных решений. Я написал быструю функцию, которая находит нужный мне индекс массива и возвращает его. Это не элегантно, но у него есть то преимущество, что я всегда могу расширить его до дополнительных размеров, если это необходимо.
import numpy as np
def findxyind(xval, yval, xarray, yarray):
while True:
for index in range(xarray.shape[0]):
if xarray[index]==xval and yarray[index]==yval:
return index
x=[-200,-200,-200,-200,-200, -150, -150, -150,-150, -150, -100, -100, -100, -100, -100]
y=[-60, -120, 0, 30, -30, -60, -120, 0, 30, -30, -60, -120, 0, 30, -30]
z=np.array([0.2, 0.1, 0, -0.32, 0.4, -0.2, 0.5, -0.1, 0.3, 0.4, -0.7, 0.7, 0.6, -0.3, 0.9])
x=np.asarray(x)
y=np.asarray(y)
xunique=np.unique(x)
yunique=np.unique(y)
zarray=np.empty([xunique.shape[0], yunique.shape[0]])
for i in range(xunique.shape[0]):
for j in range(yunique.shape[0]):
xval=xunique[i]
yval=yunique[j]
index=findxyind(xval, yval, x, y)
zarray[i,j]=z[index]
X, Y = np.meshgrid(xunique, yunique, indexing='ij')
plt.pcolormesh(X, Y, zarray)
plt.colorbar()
plt.xlabel("X-values")
plt.ylabel("Y-values")