簡體   English   中英

Python中1維數組和3維數組之間的協方差

[英]Covariance between a 1-d and a 3-d array in Python

我有一個通過xarray創建的數據集,並為其分配了坐標和尺寸。 由此得出的結果,我還有兩個變量:一個一維數組和一個三維數組,它們的坐標與第一個數組相同,另外兩個與之對應。 我想在由兩個坐標不共享的兩個坐標定義的二維空間中的每個點上,在它們的共享坐標“ memb”中獲得兩者的協方差,並使其成為一個矩陣。

換句話說,變量由“ memb”定義,另一個由“ memb”,“ north_south”和“ west_east”定義。 我想找到每個north_south和west_east點的memb協方差,並將其分配給一個變量,該變量的值分配給每個north_south和west_east值。

要一次性獲得它,我可以運行以下代碼並獲得所需的結果:

numpy.cov(var_1,var_2.isel(north_south=1,west_east=1)[0][1]

我想將此分配給一個變量,該變量的尺寸為north_south和west_east。 我想我知道如何使它與塊一起使用,但是如何將其分配給每個點具有兩個維度的變量?

方法apply_along_axis似乎合適。 例:

import numpy as np
a = np.random.uniform(size=(5,))
b = np.random.uniform(size=(5, 3, 2))
c = np.apply_along_axis(lambda x: np.cov(a, x)[0][1], 0, b)

這里c是大小為3乘2的2D數組apply_along_axis的第二個參數指定b工作軸為第0個軸(可以匹配另一個軸,只要它與1D數組a的大小匹配)即可。 Lambda只是計算協方差,返回感興趣的標量值。

暫無
暫無

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

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