Объяснение поведения несоответствия размеров между xarray и numpy для artihmetric операций - PullRequest
0 голосов
/ 06 мая 2019

Для проекта в области метеорологии я комбинирую функциональность xarray DataArrays с Numpy Arrays.В большинстве случаев это хорошо, но в одном случае все идет не так.Это происходит, когда я хотел бы умножить массив данных xarray, содержащий только одну переменную, на вектор массива Numpy.

foo = np.array([100, 200, 300]) # Create Numpy vector
bar = np.array(3)  # Create Numpy array with only one number

bar = xr.DataArray(bar)  # Convert Numpy array to Xarray DataArray

foo*bar  # Multiply the Numpy array with the 0-D Xarray DataArray. This results 
# in an error

Я ожидал бы, что умножение приведет к xarray DataArray с [300, 600, 900] в качестве результата, но вместо этого возбуждается ValueError.Мой вопрос: почему это умножение приводит к ошибке?

Вот обратная связь:

  File "C:\Anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py", line 101, in execfile
    exec(compile(f.read(), filename, 'exec'), namespace)

  File "D:\test\test.py", line 16, in <module>
    bar*foo

  File "C:\Anaconda3\lib\site-packages\xarray\core\dataarray.py", line 1972, in func
    if not reflexive

  File "C:\Anaconda3\lib\site-packages\xarray\core\variable.py", line 1676, in func
    result = Variable(dims, new_data, attrs=attrs)

  File "C:\Anaconda3\lib\site-packages\xarray\core\variable.py", line 260, in __init__
    self._dims = self._parse_dimensions(dims)

  File "C:\Anaconda3\lib\site-packages\xarray\core\variable.py", line 424, in _parse_dimensions
    % (dims, self.ndim))

ValueError: dimensions () must have the same length as the number of data dimensions, ndim=1```
...