Измените массив Numpy для хранения строки произвольной длины
NumPy основан на успешном объекте массива Numeric (и является его преемником). Его цель - создать краеугольный камень полезной среды для научных вычислений. NumPy предоставляет два основных объекта: объект N-мерного массива (ndarray) и универсальный функциональный объект (ufunc).
Тип dtype любого массива numpy, содержащего строковые значения, - это максимальная длина любой строки, присутствующей в массиве. После установки он сможет хранить только новую строку, длина которой не превышает максимальной длины на момент создания. Если мы попытаемся переназначить какое-то другое строковое значение, длина которого превышает максимальную длину существующих элементов, оно просто отбрасывает все значения, превышающие максимальную длину.
В этом посте мы собираемся обсудить способы решения этой проблемы и создания массива произвольной длины .
Давайте сначала визуализируем проблему с созданием массива numpy произвольной длины строкового типа.
# importing numpy as np import numpy as np # Create the numpy array country = np.array([ 'USA' , 'Japan' , 'UK' , ' ', ' India ', ' China']) # Print the array print (country) |
Выход :
Как видно из выходных данных, максимальная длина любого элемента длины строки в данном массиве равна 5. Давайте попробуем присвоить значение большей длины на месте пропущенного значения в массиве.
# Assign 'New Zealand' at the place of missing value country[country = = ' '] = ' New Zealand' # Print the modified array print (country) |
Выход :
Как видно из выходных данных, из-за ограничения длины было присвоено «New Z», а не «New Zealand». Теперь давайте посмотрим, как мы можем решить эту проблему.
Проблема №1: Создайте массив произвольной длины.
Решение: При создании массива присвойте ему dtype 'object'. Это позволяет вам иметь все возможности строки Python.
# importing the numpy library as np import numpy as np # Create a numpy array # set the dtype to object country = np.array([ 'USA' , 'Japan' , 'UK' , ' ', ' India ', ' China '], dtype = ' object ') # Print the array print (country) |
Выход :
Теперь мы будем использовать присвоение значения произвольной длины на месте пропущенного значения в данном массиве.
# Assign "New Zealand" to the missing value country[country = = " "] = " New Zealand" # Print the array print (country) |
Выход :
Как видно из выходных данных, мы успешно присвоили строку произвольной длины данному объекту массива.
Проблема № 2: Создайте массив произвольной длины.
Решение: мы будем использовать numpy.astype()
чтобы изменить dtype заданного объекта массива.
# importing the numpy library as np import numpy as np # Create a numpy array # Notice we have not set the dtype of the object # this will lead to the length problem country = np.array([ 'USA' , 'Japan' , 'UK' , ' ', ' India ', ' China']) # Print the array print (country) |
Выход :
Теперь мы изменим dtype данного объекта массива с помощью функции numpy.astype()
. Затем мы присвоим ему строку произвольной длины.
# Change the dtype of the country # object to 'U256' country = country.astype( 'U256' ) # Assign 'New Zealand' to the missing value country[country = = ' '] = ' New Zealand' # Print the array print (country) |
Выход :
Как видно из выходных данных, мы успешно присвоили строку произвольной длины данному объекту массива.
Примечание: максимальная длина строки, которую мы можем назначить в этом случае после изменения dtype, равна 256.
Внимание компьютерщик! Укрепите свои основы с помощью базового курса программирования Python и изучите основы.
Для начала подготовьтесь к собеседованию. Расширьте свои концепции структур данных с помощью курса Python DS. А чтобы начать свое путешествие по машинному обучению, присоединяйтесь к курсу Машинное обучение - базовый уровень.