Python 3.x xarray中的乘法

Python 3.x xarray中的乘法,python-3.x,multiplication,python-xarray,Python 3.x,Multiplication,Python Xarray,我们知道xarray通过标签处理数据。也就是说,添加两个数据集或将两个数据集相乘是在相同的维度和坐标下操作的。但是,我对xarray乘法运算后的结果的形状有一个问题 代码如下所示: import xarray as xr import numpy as np a = xr.DataArray([0,1,2,3],dims=['x'], coords={'x':[10,20,30,40]}) b = xr.DataArray(np.array([[0,1,2,3]

我们知道xarray通过标签处理数据。也就是说,添加两个数据集或将两个数据集相乘是在相同的维度和坐标下操作的。但是,我对xarray乘法运算后的结果的形状有一个问题

代码如下所示:

import xarray as xr
import numpy as np
a = xr.DataArray([0,1,2,3],dims=['x'],
                 coords={'x':[10,20,30,40]})
b = xr.DataArray(np.array([[0,1,2,3],[0,100,200,300]]),
                 dims=['y','x'],
                 coords={'y':['y1','y2'],'x':[10,20,30,40]})
print(a*b)
print(b*a)
第一个结果是

<xarray.DataArray (x: 4, y: 2)>
array([[  0,   0],
       [  1, 100],
       [  4, 400],
       [  9, 900]])
Coordinates:
  * x        (x) int64 10 20 30 40
  * y        (y) <U2 'y1' 'y2'
<xarray.DataArray (y: 2, x: 4)>
array([[  0,   1,   4,   9],
       [  0, 100, 400, 900]])
Coordinates:
  * y        (y) <U2 'y1' 'y2'
  * x        (x) int64 10 20 30 40

数组([[0,0],
[  1, 100],
[  4, 400],
[  9, 900]])
协调:
*x(x)int64 10203040
*y(y)
(a*b.T)
(b.T*a)
都生成具有形状的数组
[4,2]

我认为这是因为
b.T
更改了
b
中的DataArray维度顺序,但没有更改坐标顺序

将b与b.T进行比较:

print(b)

数组([[0,0],
[  1, 100],
[  2, 200],
[  3, 300]])
协调:
*y(y)
(a*b.T)
(b.T*a)
都生成具有形状的数组
[4,2]

我认为这是因为
b.T
更改了
b
中的DataArray维度顺序,但没有更改坐标顺序

将b与b.T进行比较:

print(b)

数组([[0,0],
[  1, 100],
[  2, 200],
[  3, 300]])
协调:
*y(y)
print(b.T)
<xarray.DataArray (x: 4, y: 2)>
array([[  0,   0],
       [  1, 100],
       [  2, 200],
       [  3, 300]])
Coordinates:
  * y        (y) <U2 'y1' 'y2'
  * x        (x) int64 10 20 30 40