Numpy数组和python列表比较和查找字符串的方法

您所在的位置:网站首页 python查找字符串中某个字符位置 Numpy数组和python列表比较和查找字符串的方法

Numpy数组和python列表比较和查找字符串的方法

#Numpy数组和python列表比较和查找字符串的方法| 来源: 网络整理| 查看: 265

python可以直接比较字符串内容是否相等,比如

date_str1 = "2020-02-03" date_str2 = "2020-02-03" if date_str1 == date_str2: print("日期字符串相等") else: print("日期字符串不相等")

如果是字符串列表,可以使用.all函数和.any函数,或者直接使用==运算符,依次比较每一个字符串元素是否相等,若全部相等则输出相等,比如

#直接使用== date_str1 = ["2020-02-03","2020-04-09"] date_str2 = ["2020-02-03","2020-04-09"] if date_str1 == date_str2: print("列表字符串相等") else: print("列表字符串不相等") #使用all函数 list1 = [1, 2, 3] list2 = [1, 2, 3] if all(x == y for x, y in zip(list1, list2)): print("列表相等") else: print("列表不相等")

而在numpy的数组也可以直接比较,但返回的是一个bool列表,存储每一个元素是否相等的布尔值,比如

import numpy as np date_str1 = np.asarray(['2020-01-01', '2020-02-02', '2020-03-03']) date_str2 = np.asarray(['2020-01-01', '2020-02-02', '2020-03-03']) print(date_str1==date_str2)

输出结果为

 注意以上输出为一个布尔数组,而且要求比较的数组维度长度均相等。

但如果只想要返回一个布尔值呢?可以使用numpy中的array_equal函数,如下:

import numpy as np date_str1 = ['2020-01-01', '2020-02-02', '2020-03-03'] date_str2 = ['2020-01-01', '2020-02-02', '2020-03-03'] if np.array_equal(date_str1,date_str2): print("列表字符串相等") else: print("列表字符串不相等")

numpy还提供了很多其他函数,比如array_equiv,char.equal,这些函数大同小异,我觉得记住array_equal就行了

如果想要查找指定字符串在数组或列表中的位置呢?方法是不同的,因为列表和数组不是相同的数据结构

先说在列表中指定数据的方法,可以使用index函数,但要注意确定指定数据是否在列表中,如果没在会引发错误,要么提前确定,要么额外编写处理异常的方法

my_list = ['apple', 'banana', 'orange', 'apple', 'grape'] search_str = 'orange' if search_str in my_list: index = my_list.index(search_str) print(index) # 输出:2 else: print("字符串不存在于列表中")

此外也可以使用python内置函数enumerate

my_list = ['apple', 'banana', 'orange', 'apple', 'grape'] search_str = 'apple' indices = [index for index, value in enumerate(my_list) if value == search_str] print(indices) # 输出:[0, 3]

注意这种方法可以查询到所有与目标字符串相匹配的索引,而且如果没有找到不会引发错误,顶多返回一个空列表,另外说明以下以上方法不仅适用于字符串,也适用于其他类型数据

接下来介绍numpy数组中查询指定数据的方法

使用条件查找使用where函数使用vectorize函数

这几种方法如下:

import numpy as np #条件索引 arr = np.array(['apple', 'banana', 'orange']) condition = np.char.find(arr, 'an') != -1 result = arr[condition] print(result) #where函数 arr = np.array(['apple', 'banana', 'orange']) condition = np.char.find(arr, 'an') != -1 result = np.where(condition) print(arr[result]) #vectorize函数 arr = np.array(['apple', 'banana', 'orange']) condition = np.vectorize(lambda s: 'an' in s)(arr) result = arr[condition] print(result)

输出结果为:

['banana' 'orange'] ['banana' 'orange'] ['banana' 'orange'] [Finished in 284ms]

以上介绍了numpy数组和python列表比较和查找字符串的常用方法,作者水平有限,如有不足,敬请见谅!



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3