Python列表重塑求助:如何使列表形状为(10,)且元素为(400,2)数组
问题解答
你的代码其实已经达到预期效果了,问题出在你检查形状的方式上:
- Python列表本身没有
shape属性,当你调用np.shape(myList)时,NumPy会自动把整个列表转换成三维数组,所以得到(10, 400, 2)的结果。 - 你的实际需求是长度为10的列表,每个元素是形状为(400,2)的数组,当前代码生成的
myList完全符合这个要求:- 执行
len(myList)会得到10,代表列表包含10个元素; - 执行
myList[0].shape会得到(400, 2),和你预期的单个元素形状一致。
- 执行
如果你的目标就是保持列表结构,不需要做任何代码调整。只要避免用np.shape检测整个列表,改用len()查看列表长度、用元素自身的shape属性查看单个元素维度即可。
以下是验证效果的示例代码:
import numpy as np # 模拟输入数据X和Y X = np.random.rand(10, 400) Y = np.random.rand(10, 400) myList = [] for i in range(0,10): cordsX = X[i] # 长度400 cordsY = Y[i] # 长度400 myList.append(np.array(list(zip(cordsX, cordsY)))) # 验证结果 print(len(myList)) # 输出:10 print(myList[0].shape) # 输出:(400, 2)
内容的提问来源于stack exchange,提问作者emax
相关产品推荐
相关产品推荐

