繁体   English   中英

python中多维数组的最佳实践

[英]best practice for multidimensional arrays in python

假设我有一个要保存在python中的对象的集合,例如,一个数字列表:[0.12、0.85、0.11、0.12],[0.23、0.52、0.10、0.19]等。进一步假设这些对象是由3个属性(例如“来源”,“目的地”和“月份”)索引。 我希望将这些对象存储在可以容易地切片的类似数组的对象中,最好使用数字索引或名称。

所以,即

obj[2,1,7] # might return: [0.23, 0.52, 0.10, 0.19]

要么,

obj['chicago','new york','jan'] # might return: [0.12, 0.85, 0.11, 0.12]

并进一步,

obj[:,'new york','jan'] # would return data with first index = any.

我正在寻找在python中实现这一目标的最佳实践。 我确实找到了这篇文章,看起来很合适,但似乎需要一些开销,并且很少讨论替代方案。 我还发现了一个叫做xarray包的东西,尽管它似乎并不流行。 我正在转换形式R,在这里我要执行array()函数,该函数向任何类似矢量的结构添加多维索引。

经过一番摸索后,看来xarray适合我的需求。 不幸的是,由于我缺乏经验,所以我不能说与其他软件包的兼容性或性能。

import numpy as np
import xarray as xr
cityOrig = ['chicago','new york', 'boston']
cityDest = ['chicago','new york', 'boston']
month = ['jan','feb','mar','apr']
data = np.random.rand(4,3,3,4)

myArray = xr.DataArray(data,
                       dims=['dat','orig','dest','month'],
                       coords = {'orig':cityOrig,'dest':cityDest,'month':month})

print(myArray[:,1,2,1].data)
[0.64  0.605 0.445 0.059]
print(myArray.loc[:,'chicago','new york','jan'].data)
[0.64  0.605 0.445 0.059]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM