Измените массив Numpy для хранения строки произвольной длины

Опубликовано: 30 Ноября, 2021

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. А чтобы начать свое путешествие по машинному обучению, присоединяйтесь к курсу Машинное обучение - базовый уровень.