gpt4 book ai didi

python - 获取 numpy 错误(ValueError : setting an array element with a sequence)

转载 作者:太空宇宙 更新时间:2023-11-03 15:44:08 25 4
gpt4 key购买 nike

以下代码使用python 3.6编写。它应该创建一个包含二进制向量的最终矩阵。在循环期间,每个批处理都取自连续的向量以供方法 simulate_output() 使用,但最终批处理被展平为单个向量:

tmp_list = []
output = []
num_components = 4
dim = 16
total_vectors = 100000

X = np.random.choice(np.array([0, 1], dtype=np.uint8), size=(total_vectors, dim))
num_vectors = np.unique(X, axis=0)

for i in range(0, len(num_vectors), num_components):
batch = num_vectors[i:(i + num_components)]
# output.append(simulate_output(batch)) # Comment this line will not solve the error.
batch = np.hstack(batch) # to flatten the list into a single vector
tmp_list.append(batch)

final_matrix = np.array(tmp_list, dtype=np.int8)
print(final_matrix)

对于一些运行我得到这个错误:

Traceback (most recent call last):
File "test.py", line 65, in <module>
final_matrix = np.array(tmp_list, dtype=np.int8)
ValueError: setting an array element with a sequence.

我相信错误在最后一行 final_matrix = np.array(tmp_list, dtype=np.int8) 但我不知道为什么以及如何修复它,因为在某些运行中它可以同时工作在其他运行中它没有。

谢谢

最佳答案

我发现了你的问题。在这一行中:

final_matrix = np.array(tmp_list, dtype=np.int8)

您希望 final_matrix 是一个二维 numpy 数组。如果所有行都具有相同的长度,则可能是这种情况,但这不完全是您的情况。您的最后一个展平批向量更短,因为 len(num_vectors) 没有除以 num_components(4)。

如果你简单地说:

tmp_list = tmp_list[:-1]

for循环之后,一切都会好起来的。我认为千分之一的元素可以忽略不计。如果您仍然不想删除它,请尝试用零填充它以达到所需的大小 - num_components * dim

关于python - 获取 numpy 错误(ValueError : setting an array element with a sequence),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51092426/

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