2B dizi (matris) için koordinatları temsil eden veri noktalarına sahibim. Noktalar düzenli olarak ızgaralıdır, ancak bazı ızgara konumlarından veri noktaları eksiktir. Örneğin, düzenli bir 0,1 ızgaraya uyan XYZ verilerini bazı şekillerde dikkate alın (3, 4). boşluklar ve eksiklikler vardır, yani 5 puan, ve 12 vardır: görmek istiyorum ne2B dizi dizisini koordinatlardan yapın
import numpy as np
X = np.array([0.4, 0.5, 0.4, 0.4, 0.7])
Y = np.array([1.0, 1.0, 1.1, 1.2, 1.2])
Z = np.array([3.3, 2.5, 3.6, 3.8, 1.8])
# Evaluate the regular grid dimension values
Xr = np.linspace(X.min(), X.max(), np.round((X.max() - X.min())/np.diff(np.unique(X)).min()) + 1)
Yr = np.linspace(Y.min(), Y.max(), np.round((Y.max() - Y.min())/np.diff(np.unique(Y)).min()) + 1)
print('Xr={0}; Yr={1}'.format(Xr, Yr))
# Xr=[ 0.4 0.5 0.6 0.7]; Yr=[ 1. 1.1 1.2]
Bu resmi (arka gösterilmiştir: siyah = baz-0 indeksi; gri = koordinat değeri; renk = matris değeri; beyaz = eksik). 2D dizi ar
dönmek yaklaşım vectorising daha NumPythonic yolu var mı
ar = np.ma.array(np.zeros((len(Yr), len(Xr)), dtype=Z.dtype), mask=True)
for x, y, z in zip(X, Y, Z):
j = (np.abs(Xr - x)).argmin()
i = (np.abs(Yr - y)).argmin()
ar[i, j] = z
print(ar)
# [[3.3 2.5 -- --]
# [3.6 -- -- --]
# [3.8 -- -- 1.8]]
: Burada
Ben for döngüsü ile sezgisel olan ne var? Veya for döngüsü gerekli mi?