从Numpy Array解压缩序列

时间:2015-10-09 15:41:47

标签: arrays numpy tuples sequence python-2.6

我有一个numpy数组,其中元素是序列,如:

freq_chan = [  1.00000000e-01   1.88670219e-01  -7.54695562e-03   2.62096706e-13
  -2.13348799e-14   1.03343348e+00  -4.13380390e-02   2.62973944e-02
  -1.05194953e-03   3.40951940e-13  -2.68000220e-14   1.44764659e+00
  -5.79069851e-02  -1.65709468e-01   6.62852413e-03  -3.55350204e-14
   3.45455226e-15   7.39936927e-01  -2.95981613e-02]
[  2.99900000e-01   1.88684850e-01  -7.54812794e-03   2.42380739e-12
  -1.94552116e-13   1.03357295e+00  -4.13492157e-02   2.63081045e-02
  -1.05280780e-03   2.96306692e-12  -2.36910642e-13   1.44787002e+00
  -5.79248893e-02  -1.65738440e-01   6.63084580e-03  -4.40512728e-13
   3.59021896e-14   7.40073244e-01  -2.96090852e-02]

但是,序列的每个元素都应该是主矩阵的元素,如

freq_chan = [  1.00000000e-01   1.88670219e-01  -7.54695562e-03   2.62096706e-13 -2.13348799e-14   1.03343348e+00  -4.13380390e-02   2.62973944e-02 -1.05194953e-03   3.40951940e-13  -2.68000220e-14   1.44764659e+00 -5.79069851e-02  -1.65709468e-01   6.62852413e-03  -3.55350204e-14 -5.79069851e-02  -1.65709468e-01   6.62852413e-03  -3.55350204e-14 3.45455226e-15   7.39936927e-01  -2.95981613e-02]

因此,例如,freq_chan [0,1]应该返回1.88670219e-01。现在freq_chan [0,2]返回错误:

    print(freq_chan[0,2])
    TypeError: list indices must be integers, not tuple.

这个Numpy数组是使用代码:

从元组的python列表创建的
for i,j in enumerate(freq_chan):
    freq_chan[i] = np.array(freq_chan[i], dtype = float)

有没有办法创建这个Numpy数组,以便解组元组的元素?

由于

1 个答案:

答案 0 :(得分:1)

现在freq_chan不是np.array,而是一个np数组列表(因此你的错误:你不能用元组索引列表)。在你的循环之外,你必须freq_chan = np.array(freq_chan);然后freq_chan将成为2D np.array,您将能够使用[0,1]对其进行索引。

在我的示例中看到a的类型没有改变:

In[52]: a = [[ 0, 1], [2, 3]]

In[51]: type(a)
Out[51]: list  

In[52]: for i in range(len(a)):
            a[i] = np.array(a[i])

        type(a)
Out[52]: list

In[53]: a[0, 1]
Traceback (most recent call last):

  File "<ipython-input-55-e56b75b8ad1b>", line 1, in <module>
    a[0, 1]

TypeError: list indices must be integers, not tuple


In[54]: a = np.array(a)

In[55]: a[0, 1]
Out[55]: 1