gpt4 book ai didi

python - 从列表创建 numpy 数组给出了错误的形状

转载 作者:行者123 更新时间:2023-11-30 08:31:43 25 4
gpt4 key购买 nike

我正在从 numpy 数组列表创建多个 numpy 数组,如下所示:

seq_length = 1500
seq_diff = 200 # difference between start of two sequences
# x and y are 2D numpy arrays
x_seqs = [x[i:i+seq_length,:] for i in range(0, seq_diff*(len(x) // seq_diff), seq_diff)]
y_seqs = [y[i:i+seq_length,:] for i in range(0, seq_diff*(len(y) // seq_diff), seq_diff)]
boundary1 = int(0.7 * len(x_seqs)) # 70% is training set
boundary2 = int(0.85 * len(x_seqs)) # 15% validation, 15% test
x_train = np.array(x_seqs[:boundary1])
y_train = np.array(y_seqs[:boundary1])
x_valid = np.array(x_seqs[boundary1:boundary2])
y_valid = np.array(y_seqs[boundary1:boundary2])
x_test = np.array(x_seqs[boundary2:])
y_test = np.array(y_seqs[boundary2:])

我希望最终得到 6 个形状为 (n、1500、300) 的数组,其中 n 分别是训练、验证和测试数组数据的 70%、15% 或 15%。

这就是出错的地方:_train_valid 数组结果很好,但 _test 数组是一维数组数组。即:

  • x_train.shape(459, 1500, 300)
  • x_valid.shape(99, 1500, 300)
  • x_test.shape(99,)

但是打印 x_test 会验证它是否包含正确的元素 - 即它是一个由 (1500, 300) 数组组成的 99 个元素长数组。

为什么_test矩阵的形状错误,而_train_valid矩阵却没有?

最佳答案

x_seqs 中的项目长度各不相同。当它们的长度相同时,np.array可以用它们创建一个3d数组;当它们不同时,它会生成一个列表的对象数组。查看x_testdtype。查看[len(i) for i in x_test]

我拿了你的代码,添加了:

x=np.zeros((2000,10))
y=x.copy()
...
print([len(i) for i in x_seqs])
print(x_train.shape)
print(x_valid.shape)
print(x_test.shape)

得到:

1520:~/mypy$ python3 stack40643639.py 
[1500, 1500, 1500, 1400, 1200, 1000, 800, 600, 400, 200]
(7,)
(1, 600, 10)
(2,)

关于python - 从列表创建 numpy 数组给出了错误的形状,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40643639/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com