我有一个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数组,以便解组元组的元素?
由于
答案 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