[英]Python ValueError when putting one array into another
我正在尝试将一个数组插入另一个数组,但我认为 arrays 存在尺寸问题,导致出现 ValueError。 我尝试插入的指数段在 EXP 中有效并按我的预期打印,但在其上运行 len() 返回 1。为什么打印有多个元素的数组返回 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
回报
[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)
返回列表的长度,即1,因为它包含 1 个元素:numpy 数组
问题是您在执行以下操作时将数组插入列表中:
X = [np.array([0, ...])]
因此 X 是一个内部有数组的列表,我认为你应该这样做:
X = np.array([0, ...])
但是,如果你需要列表里面的数组,你应该改变这一行
e=EXP[0:4200]
到
e=EXP[0][0:4200]
现在您正在获取列表 EXP 内的第一个数组。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.