从 Numpy 数组中解压序列
Unpack sequences from Numpy Array
我有一个 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] 应该 return 1.88670219e-01。现在 freq_chan[0,2] return 错误:
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 数组,以便解包元组的元素?
谢谢
现在 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
我有一个 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] 应该 return 1.88670219e-01。现在 freq_chan[0,2] return 错误:
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 数组,以便解包元组的元素?
谢谢
现在 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