第83天:NumPy 字符串操作


by 閑歡

本文向大家介紹一下 NumPy 的常見字符串函數。

NumPy 字符串函數

以下函數用於對 dtype 為 numpy.string_ 或 numpy.unicode_ 的數組執行向量化字符串操作。 它們基於 Python 內置庫中的標准字符串函數。

這些函數在字符數組類(numpy.char)中定義:

函數 描述
add() 對兩個數組的逐個字符串元素進行連接
multiply() 返回按元素多重連接后的字符串
center() 居中字符串
capitalize() 將字符串第一個字母轉換為大寫
title() 將字符串的每個單詞的第一個字母轉換為大寫
lower() 數組元素轉換為小寫
upper() 數組元素轉換為大寫
split() 指定分隔符對字符串進行分割,並返回數組列表
splitlines() 返回元素中的行列表,以換行符分割
expandtabs() 將字符串里面的 \t 轉換成 N 個 tab
strip() 移除元素開頭或者結尾處的特定字符
lstrip() 去除字符串左邊的空格
rstrip() 去除字符串右邊的空格
join() 通過指定分隔符來連接數組中的元素
partition() 通過制定字符來分隔字符串
replace() 使用新字符串替換字符串中的所有子字符串
decode() 數組元素依次調用 str.decode
encode() 數組元素依次調用 str.encode

函數的實例說明

numpy.char.add()

numpy.char.add() 函數依次對兩個數組的對應元素進行字符串連接。

這里需要注意的是只能連接兩個數組,並且兩個數組的元素個數必須相同。

實例:

import numpy as np

# 連接兩個字符串:
print(np.char.add(['hello'], [' world']))

# 連接多個字符串
print(np.char.add(['hello', 'hi'], [' world', ' Tracy']))

返回:
['hello world']
['hello world' 'hi Tracy']

numpy.char.multiply()

將字符串或數組進行重復多重連接。

如果參數是數組的話,這個函數會對數組的每個元素分別進行多重連接。

實例:

import numpy as np

# 多重連接
print(np.char.multiply('hello ', 3))
print(np.char.multiply(['hello', 'hi'], 3))

返回:
hello hello hello 
['hellohellohello' 'hihihi']

numpy.char.center()

用於將字符串居中,並使用指定字符在左側和右側進行填充。三個參數分別是:字符串或數組,拼接后總字符串字符數,填充的字符。

這個函數感覺用在打日志的時候特別好。

實例:

import numpy as np

print(np.char.center('hello', 20, fillchar='*'))
print(np.char.center(['hello', 'hi'], 19, fillchar='*'))

返回:
*******hello********
['*******hello*******' '*********hi********']

numpy.char.capitalize()

將字符串的第一個字母轉換為大寫。

實例:

import numpy as np

print(np.char.capitalize('hello'))

返回:
Hello

numpy.char.title()

將字符串的每個單詞的第一個字母轉換為大寫。

這個函數是上面函數的升級版吧。

實例:

import numpy as np

print(np.char.title('i love china'))

返回:
I Love China

numpy.char.lower()

將字符串或數組的每個元素轉換為小寫。

實例:

import numpy as np

# 操作字符串
print(np.char.lower('GOOGLE'))

# 操作數組
print(np.char.lower(['I', 'LOVE', 'CHINA']))

返回:
google
['i' 'love' 'china']

numpy.char.upper()

將字符串或數組的每個元素轉換為大寫。

和上一個函數作用相反。

實例:

import numpy as np

# 操作字符串
print(np.char.upper('google'))

# 操作數組
print(np.char.upper(['', 'love', 'china']))

返回:
GOOGLE
['' 'LOVE' 'CHINA']

numpy.char.split()

通過指定分隔符對字符串進行分割,並返回數組。分隔符默認為空格。

實例:

import numpy as np

# 分隔符默認為空格
print(np.char.split('do you love china?'))
# 分隔符為 ,
print(np.char.split('yes,i do', sep=','))

返回:
['do', 'you', 'love', 'china?']
['yes', 'i do']

numpy.char.splitlines()

用換行符作為分隔符來分割字符串,並返回數組。

這里的換行符可以是\r\n\r\n

實例:

import numpy as np

# 換行符 \r
print(np.char.splitlines('I\rLove China'))
# 換行符 \n
print(np.char.splitlines('I\nLove China'))
# 換行符 \r\n
print(np.char.splitlines('I\r\nLove China'))

返回:
['I', 'Love China']
['I', 'Love China']
['I', 'Love China']

numpy.char.expandtabs()

將字符串里面的 \t 轉換成 N 個 tab

實例:

import numpy as np

# 將 \t 轉成3個tab
print(np.char.expandtabs('i\tlove\tchina', 3))

返回:
i  love  china

numpy.char.strip()

移除開頭或結尾處的特定字符。

實例:

import numpy as np

# 移除字符串頭尾的 a 字符
print(np.char.strip('it love china', 'i'))

# 移除數組元素頭尾的 a 字符
print(np.char.strip(['it', 'love', 'china'], 'i'))

返回:
t love china
['t' 'love' 'china']

numpy.char.lstrip()

去除字符串左邊的空格。

實例:

import numpy as np

# 去除左邊的空格
print(np.char.lstrip('    china    '))

返回:
china    

numpy.char.rstrip()

去除字符串右邊的空格。

實例:

import numpy as np

# 去除右邊的空格
print(np.char.rstrip('    china    '))

返回:
    china

numpy.char.join()

通過指定分隔符來連接數組中的元素或字符串。

可以指定多個分隔符分隔數組中對應的元素。

實例:

import numpy as np

# 操作字符串
print(np.char.join(':', 'china'))

# 操作數組
print(np.char.join(':', ['china', 'american']))

# 指定多個分隔符操作數組元素
print(np.char.join([':', '-'], ['china', 'american']))

返回:
c:h:i:n:a
['c:h:i:n:a' 'a:m:e:r:i:c:a:n']
['c:h:i:n:a' 'a-m-e-r-i-c-a-n']

numpy.char.join()

通過指定字符來分隔數組中的元素或字符串。

通過指定的字符將字符串分割成指定字符前面的字符,指定的字符串和指定字符后面的字符三個部分。

實例:

import numpy as np

# 操作字符串
print(np.char.partition('china', 'i'))

# 操作數組
print(np.char.partition(['china', 'like'], 'i'))

返回:
['ch' 'i' 'na']
[['ch' 'i' 'na']
 ['l' 'i' 'ke']]

numpy.char.replace()

使用新字符串替換字符串中的所有子字符串。

實例:

import numpy as np

# 替換字符串
print(np.char.replace('i love china', 'ov', 'ik'))

返回:
i like china

numpy.char.encode()

對數組中的每個元素進行編碼操作。默認編碼是 utf-8,可以使用標准 Python 庫中的編解碼器。

實例:

import numpy as np

# 編碼
print(np.char.encode('中國', 'utf-8'))

返回:
b'\xe4\xb8\xad\xe5\x9b\xbd'

numpy.char.decode()

對數組中的每個元素進行解碼操作。

實例:

import numpy as np

a = np.char.encode('中國', 'utf-8')
print(a)
# 解碼
print(np.char.decode(a, 'utf-8'))

返回:
b'\xe4\xb8\xad\xe5\x9b\xbd'
中國

總結

本文向大家介紹了 NumPy 的字符串函數,這些函數都可以用 python 的原生字符串的方法來完成,但是使用起來沒有這么簡潔方便。大家可以在不同的場景下根據需求使用本文的這些操作,讓代碼更簡潔,可讀性更好。

參考

https://numpy.org/devdocs/reference/routines.char.html

文中示例代碼:python-100-days

關注公眾號:python技術,回復"python"一起學習交流


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM