Рубрики
Без рубрики

Python ValueError: Установка элемента массива с последовательностью

Ismycode |. В Python, если вы в основном работаете с Numpy и создаете многомерный массив, … Теги с Python, программированием, CodeNewie, учебником.

Ismycode |.

В Python, если вы в основном работаете с Numpy и создании многомерного массива, вы бы столкнулись с ValueError: Установка элемента массива с последовательностью.

Что такое ValueError: установка элемента массива с последовательностью?

ValueError возникает, когда функция получает аргумент правильного типа, но значение типа недействительна. В этом случае, если массив NaMpy не находится в последовательности, вы получите ошибку значений.

Если вы посмотрите на примеру, MUSPY Array 2-мерное, но на более позднем этапе мы также смешивали с одномерным массивом, и, следовательно, Python обнаруживает это как неоднородную форму, что означает структуру массива, и следовательно, Python бросает ошибку значения.

#Numpy array of different dimensions

import numpy as np
print(np.array([[[1, 2], [3, 4], [5, 6]], [[1],[2]]], dtype=int))

# Output
Traceback (most recent call last):
  File "c:\Projects\Tryouts\listindexerror.py", line 2, in 
    print(np.array([[[1, 2], [3, 4], [5, 6]], [[1],[2]]], dtype=int))
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.

Решение – Создавая тот же размерный массив и имея идентичные элементы массива в каждом массиве, решит проблему, как показано ниже.

#Numpy array of same dimensions

import numpy as np
print(np.array([[[1, 2], [3, 4], [5, 6]]], dtype=int))

# Output
[[[1 2]
  [3 4]
  [5 6]]]

Другая возможность, в которую вы получите ошибку значений, когда вы пытаетесь создать массив с различными типами элементов; Например, рассмотрим пример ниже, где у нас есть массив с поплавками и смешанными строками, которые снова бросают ValuctionError: не удалось преобразовать строку для плавания.

# Mutliple data type and dtype as float 

import numpy as np
print(np.array([55.55, 12.5, "Hello World"], dtype=float))

# Output
Traceback (most recent call last):
  File "c:\Projects\Tryouts\listindexerror.py", line 2, in 
    print(np.array([55.55, 12.5, "Hello World"], dtype=float))
ValueError: could not convert string to float: 'Hello World'

Решение – Решение этого простота, если вам нужно, либо вы объявляете только плавающие числа внутри массива или если вы хотите обоим, то убедитесь, что вы изменяете DTYPE в качестве объекта вместо Float, как показано ниже.

# Changing the dtype as object and having multiple data type

import numpy as np
print(np.array([55.55, 12.5, "Hello World"], dtype=object))

# Output
[55.55 12.5 'Hello World']

Проверьте приведенные ниже примеры для получения большего количества случаев использования и лучших практик во время работы с помощью Numpy Armays.

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

def foo():
    return 3
numpy.array([2, foo()]) #good

def foo():
    return [3,4]
numpy.array([2, foo()]) #Fail, can't convert a list into a numpy 
                                   #array element

Пост Python ValueError: Установка элемента массива с последовательностью появился первым на INSMYCODE Отказ

Оригинал: “https://dev.to/itsmycode/python-valueerror-setting-an-array-element-with-a-sequence-49eh”