Измените массив Numpy для хранения строки произвольной длины
NumPy основан на успешном объекте массива Numeric (и является его преемником). Его цель - создать краеугольный камень полезной среды для научных вычислений. NumPy предоставляет два основных объекта: объект N-мерного массива (ndarray) и универсальный функциональный объект (ufunc).
Тип dtype любого массива numpy, содержащего строковые значения, - это максимальная длина любой строки, присутствующей в массиве. После установки он сможет хранить только новую строку, длина которой не превышает максимальной длины на момент создания. Если мы попытаемся переназначить какое-то другое строковое значение, длина которого превышает максимальную длину существующих элементов, оно просто отбрасывает все значения, превышающие максимальную длину.
В этом посте мы собираемся обсудить способы решения этой проблемы и создания массива произвольной длины .
Давайте сначала визуализируем проблему с созданием массива numpy произвольной длины строкового типа.
# importing numpy as npimport numpy as np # Create the numpy arraycountry = np.array([ 'USA' , 'Japan' , 'UK' , ' ', ' India ', ' China']) # Print the arrayprint (country) |
Выход : 
Как видно из выходных данных, максимальная длина любого элемента длины строки в данном массиве равна 5. Давайте попробуем присвоить значение большей длины на месте пропущенного значения в массиве.
# Assign 'New Zealand' at the place of missing valuecountry[country = = ' '] = ' New Zealand' # Print the modified arrayprint (country) |
Выход :
Как видно из выходных данных, из-за ограничения длины было присвоено «New Z», а не «New Zealand». Теперь давайте посмотрим, как мы можем решить эту проблему.
Проблема №1: Создайте массив произвольной длины.
Решение: При создании массива присвойте ему dtype 'object'. Это позволяет вам иметь все возможности строки Python.
# importing the numpy library as npimport numpy as np # Create a numpy array# set the dtype to objectcountry = np.array([ 'USA' , 'Japan' , 'UK' , ' ', ' India ', ' China '], dtype = ' object ') # Print the arrayprint (country) |
Выход :

Теперь мы будем использовать присвоение значения произвольной длины на месте пропущенного значения в данном массиве.
# Assign "New Zealand" to the missing valuecountry[country == ""] = "New Zealand" # Print the arrayprint(country) |
Выход :

Как видно из выходных данных, мы успешно присвоили строку произвольной длины данному объекту массива.
Проблема № 2: Создайте массив произвольной длины.
Решение: мы будем использовать numpy.astype() чтобы изменить dtype заданного объекта массива.
# importing the numpy library as npimport numpy as np # Create a numpy array# Notice we have not set the dtype of the object# this will lead to the length problemcountry = np.array([ 'USA' , 'Japan' , 'UK' , ' ', ' India ', ' China']) # Print the arrayprint (country) |
Выход :

Теперь мы изменим dtype данного объекта массива с помощью функции numpy.astype() . Затем мы присвоим ему строку произвольной длины.
# Change the dtype of the country# object to 'U256'country = country.astype( 'U256' ) # Assign 'New Zealand' to the missing valuecountry[country = = ' '] = ' New Zealand' # Print the arrayprint (country) |
Выход :

Как видно из выходных данных, мы успешно присвоили строку произвольной длины данному объекту массива.
Примечание: максимальная длина строки, которую мы можем назначить в этом случае после изменения dtype, равна 256.
Внимание компьютерщик! Укрепите свои основы с помощью базового курса программирования Python и изучите основы.
Для начала подготовьтесь к собеседованию. Расширьте свои концепции структур данных с помощью курса Python DS. А чтобы начать свое путешествие по машинному обучению, присоединяйтесь к курсу Машинное обучение - базовый уровень.