3维Numpy记录数组

2024-09-28 01:33:52 发布

您现在位置:Python中文网/ 问答频道 /正文

有可能有一个三维记录阵列在纽比吗?(也许这是不可能的,或者有更简单的方法来做事情——我愿意接受其他选择)。在

假设我想要一个数组来保存3个变量的数据(比如temp,precip,hummy),每个变量的数据实际上是一个包含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

我希望能够键入:

^{pr2}$

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

>>> 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很多次,但不知道我是如何设置我要的。在


Tags: 数据方法importnp记录数组事情array
1条回答
网友
1楼 · 发布于 2024-09-28 01:33:52

实际上,你可以用结构化数组来做类似的事情,但这通常会带来更多麻烦。在

你想要的基本上是标记轴。在

Pandas(构建在numpy之上)提供了您想要的内容,如果您想要这种类型的索引,这是一个更好的选择。还有Larry (for labeled array),但大部分都被熊猫取代了。在

另外,您应该查看结构化阵列的numpy文档来了解这方面的信息,而不是常见问题解答。numpy文档中有相当多的信息。http://docs.scipy.org/doc/numpy/user/basics.rec.html

如果您确实想采用纯numpy路径,请注意结构化数组可以包含多维数组。(在指定数据类型时请注意shape参数。)不过,这将很快变得更加复杂。在

pandas术语中,您需要的是^{}。不过,你应该先get familiar with ^{}s。在

以下是你如何对待熊猫:

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')

相关问题 更多 >

    热门问题