gpt4 book ai didi

python - 3d numpy 记录数组

转载 作者:太空狗 更新时间:2023-10-29 20:17:21 25 4
gpt4 key购买 nike

是否可以在 numpy 中使用 3-D 记录数组? (也许这是不可能的,或者也有更简单的方法来做事——我愿意接受其他选择)。

假设我想要一个数组来保存 3 个变量(比如温度、降水、湿度)的数据,并且每个变量的数据实际上是一个包含 2 年(行)和 6 个月数据(列)的二维数组,我可以这样创建:

>>> import numpy as np

>>> d = np.array(np.arange(3*2*6).reshape(3,2,6))
>>> d

#
# comments added for explanation...
# jan feb mar apr may Jun

array([[[ 0, 1, 2, 3, 4, 5], # yr1 temp
[ 6, 7, 8, 9, 10, 11]], # yr2 temp

[[12, 13, 14, 15, 16, 17], # yr1 precip
[18, 19, 20, 21, 22, 23]], # yr2 precip

[[24, 25, 26, 27, 28, 29], # yr1 humidity
[30, 31, 32, 33, 34, 35]]]) # yr2 humidity

我希望能够输入:

>>> d['temp']

并得到这个(数据的第一“页”):

>>> array([[ 0,  1,  2,  3,  4,  5],
[ 6, 7, 8, 9, 10, 11]])

或:

>>> d['Jan']   # assume months are Jan-June

得到这个

>>> array([[0,6],
[12,18],
[24,30]])

我经历过这个:http://www.scipy.org/RecordArrays很多次,但看不到如何设置我所追求的。

最佳答案

实际上,您可以对结构化数组执行与此类似的操作,但它通常比它的值(value)更麻烦。

您想要的基本上是带标签的轴。

Pandas (它建立在 numpy 之上)提供了你想要的,如果你想要这种类型的索引,它是一个更好的选择。还有 Larry (for labeled array) ,但它在很大程度上已被 Pandas 取代。

此外,您应该查看结构化数组的 numpy 文档以获取相关信息,而不是常见问题解答。 numpy 文档有更多信息。 http://docs.scipy.org/doc/numpy/user/basics.rec.html

如果您确实想采用纯 numpy 路线,请注意结构化数组可以包含多维数组。 (在指定 dtype 时请注意形状参数。)不过,这将很快变得比它的值(value)更复杂。

pandas 术语中,您想要的是 Panel .你可能应该 get familiar with DataFrames不过首先。

以下是使用 Pandas 的方法:

import numpy as np
import pandas

d = np.array(np.arange(3*2*6).reshape(3,2,6))

dat = pandas.Panel(d, items=['temp', 'precip', 'humidity'],
major_axis=['yr1', 'yr2'],
minor_axis=['jan', 'feb', 'mar', 'apr', 'may', 'jun'])

print dat['temp']
print dat.major_xs('yr1')
print dat.minor_xs('may')

关于python - 3d numpy 记录数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11234059/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com