ValueError: setting an array element with a sequence
ValueError: установка элемента массива с последовательностью
Почему следующие примеры кода:
np.array([[1, 2], [2, 3, 4]])
np.array([1.2, "abc"], dtype=float)
все выдают следующую ошибку?
ValueError: setting an array element with a sequence.
Переведено автоматически
Ответ 1
Возможная причина 1: попытка создать неровный массив
Возможно, вы создаете массив из списка, который не имеет формы многомерного массива:
numpy.array([[1, 2], [2, 3, 4]]) # wrong!
numpy.array([[1, 2], [2, [3, 4]]]) # wrong!
В этих примерах аргумент в numpy.array содержит последовательности разной длины. Они выдадут это сообщение об ошибке, потому что входной список не имеет формы "ящика", который можно превратить в многомерный массив.
Возможная причина 2: предоставление элементов несовместимых типов
Например, предоставление строки в качестве элемента в массиве типа float:
numpy.array([1.2, "abc"], dtype=float) # wrong!
Если вы действительно хотите иметь массив NumPy, содержащий как строки, так и числа с плавающей точкой, вы могли бы использовать dtype object , который позволяет массиву содержать произвольные объекты Python:
numpy.array([1.2, "abc"], dtype=object)
Ответ 2
Ошибка Python ValueError:
ValueError: setting an array element with a sequence.
Означает именно то, что сказано, вы пытаетесь втиснуть последовательность чисел в один слот для чисел. Это может быть использовано при различных обстоятельствах.
1. Когда вы передаете кортеж python или список, который будет интерпретироваться как элемент массива numpy:
import numpy
numpy.array([1,2,3]) #good
numpy.array([1, (2,3)]) #Fail, can't convert a tuple into a numpy #array element
numpy.mean([5,(6+7)]) #good
numpy.mean([5,tuple(range(2))]) #Fail, can't convert a tuple into a numpy #array element
deffoo(): return3 numpy.array([2, foo()]) #good
deffoo(): return [3,4] numpy.array([2, foo()]) #Fail, can't convert a list into a numpy #array element
2. Пытаясь втиснуть numpy array length > 1 в элемент numpy array:
x = np.array([1,2,3]) x[0] = np.array([4]) #good
x = np.array([1,2,3]) x[0] = np.array([4,5]) #Fail, can't convert the numpy array to fit #into a numpy array element
Создается массив numpy, и numpy не знает, как втиснуть многозначные кортежи или массивы в ячейки для отдельных элементов. Он ожидает, что все, что вы ему даете, будет вычислено до одного числа, если этого не произойдет, Numpy ответит, что он не знает, как установить элемент массива с последовательностью.
Ответ 3
В моем случае я получил эту ошибку в Tensorflow , причина заключалась в том, что я пытался передать массив с разной длиной или последовательностями :