簡體   English   中英

將二維gaussian_kde輸出/網格保存到csv python

[英]Save 2-D gaussian_kde output/meshgrid to csv python

我是python的新手(純.net背景),我正在使用教程生成2-d kde分析。

生成一些隨機的二維數據:

from scipy import stats
def measure(n):
    "Measurement model, return two coupled measurements."
    m1 = np.random.normal(size=n)
    m2 = np.random.normal(scale=0.5, size=n)
    return m1+m2, m1-m2
m1, m2 = measure(2000)
xmin = m1.min()
xmax = m1.max()
ymin = m2.min()
ymax = m2.max()

對數據執行內核密度估計:

X, Y = np.mgrid[xmin:xmax:100j, ymin:ymax:100j]
positions = np.vstack([X.ravel(), Y.ravel()])
values = np.vstack([m1, m2])
kernel = stats.gaussian_kde(values)
Z = np.reshape(kernel(positions).T, X.shape)

繪制結果:

import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.add_subplot(111)
ax.imshow(np.rot90(Z), cmap=plt.cm.gist_earth_r,
          extent=[xmin, xmax, ymin, ymax])
ax.plot(m1, m2, 'k.', markersize=2)
ax.set_xlim([xmin, xmax])
ax.set_ylim([ymin, ymax])
plt.show()

我需要將其輸出轉換為csv或其他可解析的格式,以便可以在.net應用程序上呈現它。 我看着pmeshcolor方法,它可以生成svg,但是對於大型數據集來說變得非常大。

我需要以下內容,以便可以在.net應用程序中對其進行進一步過濾

輸入:

x1 y1  
x2 y2  
x3 y3  

...(或者可以用逗號分隔,基本上我將從形狀文件中提取此文件或直接從數據庫中獲取,我主要關心的是輸出)

預期產量

x1 y1 value_from_kde  
x2 y2 value_from_kde  
x3 y3 value_from_kde  

...其中value_from_kde是從gaussian_kde函數為該特定點輸出的,我知道gaussian_kde使用網格來執行此分析,並且如果不可能實現該點對點值,則其輸出也是網格,帶有相關值的矩形也是可以接受

直角坐標[p1 p2 p3 p4] value_from_kde

輸出不得包含value_from_kde為零的記錄。

注意:重要的是要使矩形坐標保持與輸入時相同的格式,以便可以使用相同的投影來渲染我,就像我使用x,y以UTM格式輸入kde一樣,看起來像這樣671290.9984 2727340.004

似乎您只想將生成的x,y,value輸出到文件中以供以后處理(忽略零值)。 如果是這樣,您可能不想改變Z的形狀以簡化輸出過程(這就是我的Z1)

fid = open('output.csv','w')
Z1 = (kernel(positions).T, X.shape)
Z = kernel(positions).T
#for currentIndex,elem in enumerate(positions):
for currentIndex,elem in enumerate(Z):
  #if Z1[currentIneex]>0:
  s1 = '%f %f %f\n'%(positions[0][currentIndex], positions[1][currentIndex], Z[currentIndex] )

  fid.write(s1)
fid.close()

我是否想念您的問題?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM