Python 将一个数组放入另一个数组时出现 ValueError

Python ValueError when putting one array into another

我正在尝试将一个数组插入另一个数组,但我认为我遇到了数组的尺寸问题,导致了 ValueError。我尝试插入的指数段在 EXP 中有效并按我的预期打印,但 运行 len() 在其上 returns 1. 为什么一个数组打印有多个元素return len() 为 1?下面的代码片段:

SPR = 48000  # Hz
duration = 0.2  # second
t = numpy.linspace(0, duration, duration * SPR)    
p_list = [0, numpy.pi, 0]   

SIGNALS = [(16000 * numpy.sin((2 * numpy.pi * t * 20) + p)).astype('int16')
            for p in p_list]
EXP = [(16000 * (2**(-100*t))).astype('int16')]

e=EXP[0:4200]
print(e)
print(len(e))
SIGNALS[0][600:4800] = e

returns

[array([16000, 15976, 15953, ...,     0,     0,     0], dtype=int16)]
1
Traceback (most recent call last):
  File "/home/pi/Experiments/actronika-exp.py", line 87, in <module>
    SIGNALS[0][600:4800] = e
ValueError: setting an array element with a sequence.
[array([16000, 15976, 15953, ...,     0,     0,     0], dtype=int16)]

这个 (e) 是 python 列表中的一个 numpy 数组。 len(e) returns 列表的长度, 1,因为它包含 1 个元素:numpy 数组

问题是您在执行以下操作时将数组插入到列表中:

X = [np.array([0, ...])]

因此 X 是一个包含数组的列表,我认为你应该这样做:

X = np.array([0, ...])

然而,如果你需要列表里面的数组,你应该改变这一行

e=EXP[0:4200]

e=EXP[0][0:4200]

现在您正在获取列表 EXP 内的第一个数组。