我有一個二維座標數組,每個座標對應一個z值(如z = f(x,y))。現在我想將整個二維座標集劃分爲例如100個甚至二進制文件。並計算每個bin中z的中值。然後使用scipy.interpolate.griddata函數創建一個插值z曲面。我如何在Python中實現它?我正在考慮使用np.histogram2d,但我認爲它沒有中值函數。我發現自己很難理解scipy.stats.binned_statistic是如何工作的。有人能幫助我嗎。謝謝。獲取二維網格中每個bin中的中值
1
A
回答
1
你需要的一些功能或一個取決於你想如何構建的東西:
函數來創建垃圾箱應該在你的數據,確定每個區間有多大,並返回一個數組或數組數組(在python中也稱爲列表)。
樂於幫助,但需要更多關於數據的信息。
得到箱的中位數: numpy的(SciPy的部分)的中值函數 http://docs.scipy.org/doc/numpy-1.10.1/reference/generated/numpy.median.html 基本上是一個陣列上的位數叫 「bin」 的 將是: $ numpy.median(BIN)
注意:numpy.median確實接受多個數組,因此您可以一次性獲得部分或全部垃圾箱的中位數。 numpy.median(箱),這將返回值的數組,每個箱
你的示例代碼更新
不是100%,所以這裏有雲:
import numpy as np
# added some parenthesis as I wasn't sure of the math. also removed ;'s
def bincalc(x, y):
return x*(1-x)*(np.sin(np.pi*x))/(1.5+np.sin(2*(np.pi*y)**2)**2)
coo = np.random.rand(1000,2)
tcoo = coo[0]
a = []
for i in tcoo:
a.append(bincalc(coo[0],coo[1]))
z_med = np.median(a)
print(z_med)`
1
隨着numpy.histogram2d
你既可以統計數據的數量並對它進行求和,也可以計算出平均值。
我會嘗試這樣的事:
import numpy as np
coo=np.array([np.arange(1000),np.arange(1000)]).T #your array coordinates
def func(x, y): return x*(1-x)*np.sin(np.pi*x)/(1.5+np.sin(2*np.pi*y**2)**2)
z = func(coo[:,0], coo[:,1])
(n,ex,ey)=np.histogram2d(coo[:,0], coo[:,1],bins=100) # here we get counting
(tot,ex,ey)=np.histogram2d(coo[:,0], coo[:,1],bins=100,weights=z) # here we get total over z
average=tot/n
average=np.nan_to_num(average) #cure 0/0
print(average)
+0
謝謝,但這是爲了獲得平均水平。我想獲得中位數。 – frankgut
相關問題
- 1. 如何在Python中的每個二維直方圖中獲取最大值
- 2. 在Python中獲取HTML中的每個第二個網址
- 3. 二維網格插值
- 4. 從網格中獲取值
- 5. 二維網格中的連接點
- 6. 二維網格
- 7. 二維網格大於二維數組中的Java
- 8. 如何從網格中的每個單元格獲取項目
- 9. 在Javascript中獲取二維數組中特定元素的值
- 10. 多維數組獲取php中使用的值每個
- 11. 從二維C數組中獲取前一行「值」的值
- 12. 獲取表格中每行的第一個單元格值
- 13. 在二維網格中查找最接近的值c#
- 14. Python中時間序列的二維網格插值
- 15. 遍歷二維數組中的每個單元格
- 16. 在會話中從二維數組列表中獲取值
- 17. PHP - 爲二維數組中的每個數組添加值
- 18. 獲取二維數組中的值的座標
- 19. 獲取二維數組中每個單獨行和列的總和
- 20. 獲取二維數組中列的最小值
- 21. 如何從具有索引的二維數組中獲取值
- 22. 最快的方式從二維數組中獲取值
- 23. DualListBox從第二個框中獲取值
- 24. 獲取二維數組的最大值
- 25. 從Java中的二維數組中獲取中位數
- 26. 尋找二維數組中的非空網格單元格
- 27. 如何獲取表格的每個值?
- 28. 如何從MVC項目中的每個表格行獲取每個值?
- 29. 在循環中獲取每100個值
- 30. 如何獲取多維數組中每個項目的第一個值?
例如:高清FUNC(X,Y): 返回X *(1-X)* np.sin(np.pi * X)/( 1.5 + np.sin(2 * np.pi * Y ** 2)** 2); coo = np.random.rand(1000,2); z = func(coo [:,0],coo [:,1]); – frankgut
更新回答以上 –
爲什麼它只給我一個z_med的值,而不是一個數組? – frankgut