首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何创建可索引的集合数组

如何创建可索引的集合数组
EN

Stack Overflow用户
提问于 2021-03-03 23:42:40
回答 1查看 18关注 0票数 0

我正在解析来自我运行的各种测试的多个数据文件,并且希望将来自每个测试的值分组到属于集合的变量中。例如,一对集合是:

代码语言:javascript
复制
type_GA_RX1 = collections.namedtuple('type_GA_RX1',
                                    ['GA_RX1',
                                    'GA_RX1logmag',
                                    'GA_RX1mag',
                                    'GA_RX1ph'])

type_GA_RX2 = collections.namedtuple('type_GA_RX2',
                                        ['GA_RX2',
                                        'GA_RX2logmag',
                                        'GA_RX2mag',
                                        'GA_RX2ph'])

当我遍历这些文件时,我想做这样的事情:

代码语言:javascript
复制
keys=dataGA.keys()   # dictionary of parsed file data 
for key in keys:
        if len(dataGA[key]) >0:
            GA_RX1logmag   = np.array(dataGA[key].RX1_log_mag)
            GA_RX1mag      = 10**(GA_RX1logmag/20)
            GA_RX1         = np.array(dataGA[key].RX1_real +1j*dataGA[key].RX1_imag)
            GA_RX1ph       = np.array(dataGA[key].RX1_phase)

然后将这些赋值给集合类型:

代码语言:javascript
复制
type_GA_RX1[key].GA_RX1logmag =  GA_RX1logmag
type_GA_RX1[key].GA_RX1mag    =  GA_RX1mag
type_GA_RX1[key].GA_RX1       =  GA_RX1
type_GA_RX1[key].GA_RX1ph     =  GA_RX1ph

但是,我不能索引到一个'type‘对象;我得到这个错误:

代码语言:javascript
复制
type_GA_RX1[key].GA_RX1logmag=  GA_RX1logmag
TypeError: 'type' object is not subscriptable

我该怎么做呢?或者,这不是我想要做的吗?如何创建集合的数组?

为了清楚起见,dataGA看起来像这样(摘录):

代码语言:javascript
复制
    {0:      RX1_real  RX1_imag  RX2_real  ...  distance  RX2_log_mag  RX1_log_mag
 61  -0.019780 -0.005127  0.010010  ...       1.0   -38.426806   -33.793076
 62  -0.018310 -0.010740  0.007812  ...       4.0   -38.190809   -33.462052
 63  -0.016600 -0.012450  0.006348  ...       8.0   -38.523323   -33.659638
 64  -0.020510 -0.005127  0.010010  ...      18.0   -38.426806   -33.497447
 65  -0.015140 -0.013670  0.005127  ...      25.0   -38.488333   -33.808143
 ..        ...       ...       ...  ...       ...          ...          ...
 477 -0.006104 -0.018310 -0.009521  ...    9795.0   -37.416049   -34.288563
 478 -0.008545  0.017820  0.013180  ...    9799.0   -37.482664   -34.083018
 479  0.000000  0.019290  0.010990  ...    9802.0   -37.584010   -34.293355
 495  0.018800  0.004395 -0.005127  ...    9803.0   -36.574736   -34.285753
 480 -0.008301 -0.017330 -0.007324  ...    9804.0   -37.062341   -34.326965
 
 [401 rows x 9 columns],
 1:      RX1_real  RX1_imag  RX2_real  ...  distance  RX2_log_mag  RX1_log_mag
 61  -0.019780 -0.005127  0.010010  ...       1.0   -38.426806   -33.793076
 62  -0.018310 -0.010740  0.007812  ...       4.0   -38.190809   -33.462052
 63  -0.016600 -0.012450  0.006348  ...       8.0   -38.523323   -33.659638
EN

回答 1

Stack Overflow用户

发布于 2021-03-03 23:52:04

type_GA_RX1key.GA_RX1logmag = GA_RX1logmag type_GA_RX1key.GA_RX1mag = GA_RX1mag type_GA_RX1key.GA_RX1 = GA_RX1 type_GA_RX1key.GA_RX1ph = GA_RX1ph

这里有两三个问题:

命名元组你从来没有创建过一个type_GA_RX1.

  • If的实例,命名的
  1. 实例是不可变的,所以你不能在创建之后分配属性。您需要将值直接传递给initializer.
  2. You似乎是在尝试使用type_GA_RX1[key],就像type_GA_RX1是一个字典一样,但您没有在任何地方创建字典。
  3. 我还怀疑您实际上并不想将整个值数组放入一个type_GA_RX1实例中,而是只放入一个值。

我想你的意思是:

代码语言:javascript
复制
GA_RX1_instances = {}

for key, data in dataGA.items():
    if len(data) > 0:
        logmag = data.RX1_log_mag
        GA_RX1_instances[key] = type_GA_RX1(
            GA_RX1logmag = logmag
            GA_RX1mag    = 10**(logmag/20)
            GA_RX1       = data.RX1_real + 1j*data.RX1_imag
            GA_RX1ph     = data.RX1_phase
        )

其中GA_RX1logmag = ...等不是局部变量,而是关键字参数。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66460303

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档