numpy - xarray- 向 DataArray 添加一个新维度并将坐标分配给该维度
问题描述
我有一个名为的 DataArray 对象test
。它包含一个名为的变量FFDI 90TH PERCENTILE
以及纬度和经度维度。
import numpy as np
import pandas as pd
import xarray as xr
print(test)
<xarray.DataArray 'FFDI 90TH PERCENTILE' (latitude: 106, longitude: 193)>
array([[ 2.699949, 2.699277, 2.677113, ..., 3.353225, 3.381503, 3.392549],
[ 2.7 , 2.704608, 2.70228 , ..., 3.422083, 3.435692, 3.465664],
[ 2.720069, 2.71194 , 2.711843, ..., 3.5 , 3.5 , 3.501185],
...,
[34.863322, 34.825574, 34.694171, ..., 8.599811, 8.50329 , 8.815733],
[34.728609, 35.180146, 35.203714, ..., 8.164053, 8.01015 , 7.94335 ],
[34.654186, 34.865241, 34.987067, ..., 7.814975, 7.644326, 7.925 ]])
Coordinates:
* latitude (latitude) float32 -39.2 -39.149525 ... -33.950478 -33.9
* longitude (longitude) float32 140.8 140.84792 140.89584 ... 149.95209 150.0
我有以下times
元素:
times = pd.date_range("1972/12/01","2017/12/01",freq='D',closed='left')
time_da = xr.DataArray(times, [('time', times)])
我想添加一个新维度并调用它time
;并将上述时间分配给time
维度作为坐标。所以新的test
DataArray 看起来像:
<xarray.DataArray 'FFDI 90TH PERCENTILE' (time: 16436, latitude: 106, longitude: 193)>
我用assign_coords
和做了以下尝试expand_dims
。他们都没有工作。
一:
test_assigned = test.assign_coords({'time': times.values})
TypeError: assign_coords() takes 1 positional argument but 2 were given
二:
test_assigned = test.assign_coords(time=times.values)
ValueError: cannot add coordinates with new dimensions to a DataArray
解决方案
这是 的用例expand_dims
,它将沿新维度扩展数组并为其分配坐标(如果提供):
result = test.expand_dims(time=time_da)
推荐阅读
- javascript - 我在第一个合适的项目上碰壁了
- github - 向 GitHub 搜索 API 发送 GET 请求时如何指定多种语言
- php - 检查响应中的文件是否具有标头 Content-Type: application/json
- javers - 如何仅使用 javers 中可用的快照来构建对象及其整个嵌套?
- json - 尝试使用其 json 模式验证 json
- nginx - Nginx 没有将 url 连接到应用程序
- blockchain - Corda 检查 session.send/receive 的完整性
- c++ - 第 1034 行:字符 34:运行时错误:将无符号偏移量添加到 0x6040000000d0 溢出到 0x6040000000b8 (stl_vector.h)
- javascript - 无法显示折线图
- hana - SAP DBTech JDBC:[328]:无效的函数或过程名称:RECORD_COUNT。我不明白为什么在使用 RECORD_COUNT() 时会出现错误