2016-03-31 14 views
0

Nokta korelasyonunu korurken üç ayrı iki boyutlu diziyi nasıl düzleştirebilirim? Örneğin, x ve y için konum bilgisi içeren bir veri kümesinden ve bazı ilişkili veri dizisinden (cartm) bir veri ağı oluşturuyorum. İnterpolasyondan sonra, X2 ve Y2, ağ örgüsü nedeniyle 300x300 boyutuna sahiptir; interpval ayrıca 300x300 boyutlarındadır, çünkü her bir interpval noktası, (X2, Y2) meshgrid üzerindeki tek bir koordinatla ilişkilendirilmiştir.2B meshgrid düzleştirirken nokta korelasyonunun sürdürülmesi

Bu 2d matrislerinin her birini nasıl düzleştirebilirim ve interpval değerleri ile meshgrid'teki konumları arasındaki 1: 1 bağıntısını nasıl koruyabilirim? Nihayetinde, bir X-location sütunu, bir Y-konumu sütunu ve ilgili enterpolasyon verisine sahip bir sütun ile bir Nx3 dizisi ile sonuçlanmak istiyorum. Şimdiden teşekkürler!

import numpy as np 
import scipy.interpolate 
import matplotlib.pyplot as plt 

# Create x,y vectors 
cartx = np.array([0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50]) 
carty = np.array([1, 23, 4, 6, 12, 15, 16, 18, 20, 21, 22]) 

# Create data vector 
cartm = np.array([5.3, 23, 2, 5, 2, 2.5, 13, 9, 7.5, 1.7, 12]) 

# Prepare meshgrid, interpolate 
cartcoord = zip(cartx, carty) 
X = np.linspace(cartx.min(), cartx.max(), 300) 
Y = np.linspace(carty.min(), carty.max(), 300) 
X2, Y2 = np.meshgrid(X, Y) 
interp = scipy.interpolate.LinearNDInterpolator(cartcoord, cartm, fill_value=0) 
interpval = interp(X2, Y2) 

print(X2.shape, Y2.shape, interpval.shape) 

cevap

1

Sen X2, Y2 ve interpval düzleştirmek için ravel() yöntemi kullanabilirsiniz. Onları bir Nx3 dizisine koymak için numpy.column_stack'u kullanabilirsiniz. Yani bunu yapmalısınız: Örneğin

np.column_stack((X2.ravel(), Y2.ravel(), interpval.ravel())) 

,

In [91]: X2 
Out[91]: 
array([[1, 2], 
     [3, 4]]) 

In [92]: Y2 
Out[92]: 
array([[11, 12], 
     [13, 14]]) 

In [93]: Z2 
Out[93]: 
array([[21, 22], 
     [23, 24]]) 

In [94]: np.column_stack((X2.ravel(), Y2.ravel(), Z2.ravel())) 
Out[94]: 
array([[ 1, 11, 21], 
     [ 2, 12, 22], 
     [ 3, 13, 23], 
     [ 4, 14, 24]])