Numpy 如何创建字符数组

Numpy 如何创建字符数组

Numpy是Python中强大的科学计算库,它可以处理各种形状和类型的数组。由于numpy中的数组支持不同的数据类型,包括字符,因此在创建字符数组时需要注意一些问题。这篇文章将介绍如何在numpy中创建字符数组,包括基本操作、初始化、转换和连接,以及一些示例说明。

阅读更多:Numpy 教程

numpy中字符数组的基本操作

在numpy中,字符数组的创建和操作方式与数值数组基本相同。只需使用dtype参数将字符数组的数据类型指定为字符串即可。如:

import numpy as np
#创建包含字符串的一维数组
a = np.array(['apple', 'banana', 'orange'], dtype='S')
#创建包含字符串的二维数组
b = np.array([['apple', 'banana'], ['orange', 'grape']], dtype='S')
Python

字符数组的形状、大小和维数可以随意改变,但必须保证其中每个元素的类型相同。字符数组还可以通过元素的下标和切片操作进行访问和修改。如:

#访问数组中第1个元素
print(a[0])
output: b'apple'
#修改数组中第2个元素
a[1] = 'pear'
print(a)
output: [b'apple' b'pear' b'orange']
#访问数组中第2列第1行的元素
print(b[1,0])
output: b'orange'
#修改数组中第1列第2行的元素
b[0,1] = 'watermelon'
print(b)
output: [[b'apple' b'watermelon']
         [b'orange' b'grape']]
Python

numpy中字符数组的初始化

有时,我们需要在numpy创建字符数组时进行初始化。numpy提供了多种初始化方法,包括使用zeros(),ones(),empty()和full()等函数。这里我们重点介绍zeros()和full()函数:

#创建一个大小为3x3的字符数组,其所有元素均为0
x = np.zeros((3,3), dtype='S')
print(x)
output: [[b'' b'' b'']
         [b'' b'' b'']
         [b'' b'' b'']]
#创建一个大小为2x2的字符数组,其所有元素均为‘apple’
y = np.full((2,2), 'apple', dtype='S')
print(y)
output: [[b'apple' b'apple']
         [b'apple' b'apple']]
Python

从上面的示例中可以看出,使用zeros()函数创建的字符数组中所有元素都是空字符串‘’。而full()函数则可以为所有元素指定相同的初始值。

numpy中字符数组的转换

在使用numpy进行字符数组操作时,我们有时需要将其转换为其他数据类型。numpy提供了astype()函数帮助我们实现这一目的。astype()函数接受一个目标数据类型作为参数,将在新数组中创建一个新的字符数组,转换后的类型与目标类型相同。如:

#创建一个大小为3x3的字符数组,所有元素值为‘10’
z = np.full((3,3), '10', dtype='S')
print(z.dtype)
output: |S2
#将字符数组转换为整数类型数组
z_int = z.astype(int)
print(z_int)
output: [[10 10 10]
         [10 10 10]
         [10 10 10]]
print(z_int.dtype)
output: int32
Python

注:这里将字符数组中的所有‘10’转换为了整数10。需要注意的是,字符数组的转换前后中每个字符串元素的长度必须相等。否则,转换过程中可能出现异常。

numpy中字符数组的连接

将两个或多个字符数组连接为一个更大的数组。呈列连接或行连接等几种形式。

列连接

在列方向上连接两个字符数组,使用hstack()函数。如:

#创建两个大小为3x2的字符数组,并在列方向上连接它们
a = np.array([['apple', 'banana'], ['orange', 'grape'], ['pear', 'watermelon']], dtype='S')
b = np.array([['peach', 'cherry'], ['kiwi', 'pineapple'], ['lemon', 'lime']], dtype='S')
c = np.hstack((a,b))
print(c)
output: [[b'apple' b'banana' b'peach' b'cherry']
         [b'orange' b'grape' b'kiwi' b'pineapple']
         [b'pear' b'watermelon' b'lemon' b'lime']]
Python

行连接

在行方向上连接两个字符数组,使用vstack()函数。如:

#创建两个大小为2x3的字符数组,并在行方向上连接它们
a = np.array([['apple', 'banana', 'orange'], ['grape', 'pear', 'watermelon']], dtype='S')
b = np.array([['peach', 'cherry', 'kiwi'], ['pineapple', 'lemon', 'lime']], dtype='S')
c = np.vstack((a,b))
print(c)
output: [[b'apple' b'banana' b'orange']
         [b'grape' b'pear' b'watermelon']
         [b'peach' b'cherry' b'kiwi']
         [b'pineapple' b'lemon' b'lime']]
Python

深度连接

在深度方向上连接两个字符数组,使用dstack()函数。如:

#创建两个大小为2x2的字符数组,并在深度方向上连接它们
a = np.array([['apple', 'banana'], ['orange', 'grape']], dtype='S')
b = np.array([['peach', 'cherry'], ['kiwi', 'pineapple']], dtype='S')
c = np.dstack((a,b))
print(c)
output: [[[b'apple' b'peach']
          [b'banana' b'cherry']]
         [[b'orange' b'kiwi']
          [b'grape' b'pineapple']]]
Python

总结

在使用numpy中创建字符数组时,需要使用dtype参数将数组的数据类型指定为字符串。字符数组的形状、大小和维数可以随意改变,但必须保证其中每个元素类型相同。numpy提供了多种初始化方法,如zeros()和full()函数。astype()函数可以帮助我们将字符数组转换为其他数据类型的数组。在连接字符数组时,可以使用hstack()函数,vstack()函数和dstack()函数进行操作。通过这些方法,我们可以灵活地创建和操作numpy中的字符数组。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册