मेरे पास डेटा पॉइंट हैं जो 2 डी सरणी (मैट्रिक्स) के लिए निर्देशांक का प्रतिनिधित्व करते हैं। अंक नियमित रूप से gridded हैं, सिवाय इसके कि डेटा ग्रिड कुछ ग्रिड पदों से गायब हैं।निर्देशांक से 2 डी न्यूम्पी सरणी बनाएं
उदाहरण के लिए, कुछ XYZ डेटा पर विचार करें जो नियमित 0.1 ग्रिड पर आकार (3, 4) के साथ फिट बैठता है। वहाँ अंतराल और लापता अंक हैं, इसलिए वहाँ 5 अंक, और नहीं 12 हैं:
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]
मैं देखना चाहेंगे क्या इस छवि (पृष्ठभूमि में दिखाया गया है: काले = आधार -0 सूचकांक; ग्रे = मूल्य के बीच तालमेल की रंग = मैट्रिक्स मान; सफेद = गायब)।
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]]
वहाँ दृष्टिकोण एक 2D सरणी ar
वापस जाने के लिए vectorising का एक और अधिक NumPythonic रास्ता नहीं है:
यहाँ है कि मैं क्या है, जो पाश के लिए एक साथ सहज है है? या लूप के लिए जरूरी है?