Получение ошибки numey (ValueError: установка элемента массива с последовательностью) - PullRequest
0 голосов
/ 29 июня 2018

Следующий код написан с использованием 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), но я понятия не имею, почему и как это исправить, поскольку в некоторых запусках это работает, в то время как в других запусках это не так.

Спасибо

1 Ответ

0 голосов
/ 29 июня 2018

Я нашел вашу проблему. В этой строке:

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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...