繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM