c是一个字典,存的是array类型的数组,但是这么写为什么报错k = np.concatenate((c[i].reshape(-1,1) for i in range(len(l)-2)) , axis=1)。报错的信息是TypeError: The first input argument needs to be a sequence
时间: 2023-06-01 16:01:53 浏览: 164
的 arrays, but <class 'generator'> was given. 这是因为这个写法中使用了生成器表达式 (generator expression)。生成器表达式和列表推导式 (list comprehension) 很像,但是不会创建一个完整的列表,而是一个生成器对象,只有在需要的时候才会计算出下一个值。而在这里,np.concatenate() 函数需要的是一个序列 (sequence) 的数组,而不是一个生成器对象。解决方法是将生成器表达式改为列表推导式,即将圆括号改为方括号:k = np.concatenate([c[i].reshape(-1,1) for i in range(len(l)-2)] , axis=1)。
相关问题
c是一个字典,存的是array类型的数组,但是这么写为什么报错k = np.concatenate((c[i].reshape for i in range(len(l)-2)) , axis=1)
这里报错的原因是因为使用了一个函数的引用而不是对函数进行调用。具体来说,`c[i].reshape`应该改为`c[i].reshape()`。
修改后的代码如下:
```python
k = np.concatenate((c[i].reshape() for i in range(len(l)-2)) , axis=1)
```
这样就可以正确地调用`reshape()`函数来获取数组的形状了。
c是一个字典,存的是array类型的数组,但是这么写为什么报错k = np.concatenate((c[i].reshape(-1,1) for i in range(len(l)-2)) , axis=1)
根据提供的代码,无法确定报错的具体信息。但是根据代码推测,可能是因为字典c中的某些数组长度不一致,导致在使用np.concatenate()函数时无法正确拼接数组。
建议检查字典c中每个数组的长度是否一致,如果不一致,可以使用np.pad()函数将其补齐至相同长度。另外,也可以考虑使用np.vstack()函数代替np.concatenate()函数,以避免在拼接数组时出错。
阅读全文