numpy 请求的数组在1维后有不均匀的形状,检测到的形状是(33,)+不均匀部分

pbpqsu0x  于 2023-04-21  发布在  其他
关注(0)|答案(2)|浏览(266)

我在转换列表到numpy卡住了。转换列表大小是(33,n,428)。N是随机差异,我不知道数字是如何组成的。这里是错误。

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
C:\Users\HILAB_~1\AppData\Local\Temp/ipykernel_22960/872733971.py in <module>
----> 1 X_train = np.array(X_train, dtype=np.float64)
      2 
      3 for epoch in range(EPOCH):
      4     X_train_ten, y_train_ten = Variable(torch.from_numpy(X_train)), Variable(torch.tensor(y_train, dtype=torch.float32, requires_grad=True))
      5     print(X_train_ten.size())

ValueError: setting an array element with a sequence. The requested array has an inhomogeneous shape after 1 dimensions. The detected shape was (33,) + inhomogeneous part.

问题代码在这里。

X_train, X_test, y_train, y_test = train_test_split(
    X, y, test_size=0.3, random_state=42, shuffle=True
)

print("[SIZE]\t\tTrain X size : {}, Train y size : {}\n\t\tTest X size : {}, Test y size : {}"\
        .format(len(X_train), len(y_train), len(X_test), len(y_test)))

train_dataloadloader = DataLoader(X_train)
test_dataloader = DataLoader(X_test)

X_train = np.array(X_train, dtype=np.float64)

我不明白什么是错误的意思.请帮助.谢谢:D

uelo1irk

uelo1irk1#

这意味着无论X包含什么序列,它们的长度都不相同。这是在X中找到的所有不同长度的集合。
考虑以下示例:

>>> import numpy as np
>>> x = [[1, 2], [2, 3, 4]]
>>> np.array(x, dtype=np.float64)
[...]
ValueError: setting an array element with a sequence. The requested array has an inhomogeneous shape after 1 dimensions. The detected shape was (2,) + inhomogeneous part.

在这里,列表x包含另外两个列表,一个长度为2,另一个长度为3。由于“列”维度不匹配,它们不能组合成一个数组。

zphenhs4

zphenhs42#

要将嵌套列表合并为一个平面列表,可以使用内置的Python函数sum()沿着列表解析:

x = [[1, 2], [2, 3, 4]]
merged_list = sum([sublist for sublist 
in x], [])
print(merged_list)

输出:[1, 2, 2, 3, 4]
这里,列表解析[sublist for sublist in x]返回x中的子列表列表的列表。sum()函数然后通过使用空列表作为起始值将这些子列表连接在一起,将这些子列表扁平化为单个列表。

相关问题