如何在Python中反转布尔数组的元素?

如何在Python中反转布尔数组的元素?

有时,任务是反转布尔数组。如果文件包含包含True或False值的列,并且需要以相反的方式使用该列的值,则通常需要使用列的相反值。例如,如果CSV文件包含Covid Negative状态的数据列,表示Covid-ve患者的True,则需要创建一个Covid + ve状态的列。在这种情况下,需要进行布尔值的数组反转。在本Python文章中,使用四个不同的示例介绍了不使用numpy或使用numpy反转布尔数组的不同方法。此外,还展示了表示原始数组和反转数组中布尔值的图形。

用于获取布尔列数据的data.csv文件

Patientname,covidnegative
Raju,True
Meena,False
Happy,True
……,……
Bash

示例1:使用Numpy反转布尔数组并比较布尔值图形

算法

  • 第1步: 首先导入pandas、numpy和plotly。Plotly是用于制作散点图的Python开源绘图库。

  • 第2步: 现在读取data.csv文件,将其转换为dataframe,并绘制散点图,将布尔列“covidnegative”显示在Y轴上。

  • 第3步: 读取布尔列值。现在,使用numpy函数将其转换为数组,然后使用numpy的invert函数反转数组。

  • 第4步: 将新列“covidpositive”添加到dataframe,并添加反转值。

  • 第5步: 再次绘制散点图,将布尔列“covidpositive”显示在Y轴上。

  • 第6步: 编写函数以显示散点图。使用cmd窗口运行程序。图表将在浏览器的新选项卡中打开。比较两个图的y轴。

#包括所需库
import pandas as pd
import numpy as np

#需要此库来制作散点图
import plotly.express as pxx

#读取csv文件并创建dataframe
dff = pd.read_csv("data.csv")

#打印列和数据,绘制散点图
figg = pxx.scatter(dff, x="patientname", y="covidnegative")

#设置散点图的属性
figg.update_traces(marker=dict(size=12, line=dict(width=2, color="blue")), selector=dict(mode='markers'))

#显示图表
figg.show()
covidstatus=dff["covidnegative"]
arr = covidstatus.to_numpy()

#print(arr)
arr_inver = np.invert(arr)

#print(arr_inver)
dff['covidpositive'] = arr_inver.tolist()

#print(dff)
#制作散点图
figg = pxx.scatter(dff, x="patientname", y="covidpositive")

#设置散点图的属性
figg.update_traces(marker=dict(size=12, line=dict(width=2, color="red")), selector=dict(mode='markers'))

#显示图表
figg.show() 
Bash

输出

在命令窗口中运行Python文件 −

如何在Python中反转布尔数组的元素?

以下图显示了原始数组和反转数组中布尔值的图。

如何在Python中反转布尔数组的元素?

如何在Python中反转布尔数组的元素?

示例2:使用Numpy的~反转布尔值数组

算法

  • 第一步 – 首先导入pandas和numpy

  • 第二步 – 现在读取data.csv文件,将其转换为数据框,并打印数据框。

  • 第三步 – 读取布尔列的值。使用numpy函数将其转换为数组,然后使用numpy的数组上的~反转数组。

  • 第四步 – 在数据框中添加一个名为“covidpositive”的新列,并添加反转值。再次打印数据框。

  • 第五步 – 在命令窗口中运行程序。比较原始值与反转值布尔列。

#包含所需的库
import pandas as pd
import numpy as npp

#读取csv文件并创建数据框
dff = pd.read_csv("data.csv")
print("\n数据框显示CSV文件中的布尔值列")
print(dff)
covidstatus=dff["covidnegative"]
arr01 = covidstatus.to_numpy()
print("\nCSV中的布尔列作为数组:")
print(arr01)
inverted_arr01 = ~npp.array(arr01, dtype=bool)
print("\nCSV中的布尔列作为反转数组:")
print(inverted_arr01)
dff['covidpositive'] = inverted_arr01.tolist()
print("\n添加了反转列的新数据框:")
print(dff) 
Bash

输出

在命令窗口中运行Python文件 –

如何在Python中反转布尔数组的元素?

示例3:使用 Numpy 的 Logical_not 反转布尔值数组

算法

  • 第一步 – 首先导入pandas和numpy。

  • 第二步 – 现在读取data.csv文件,并将其转换为数据框。

  • 第三步 – 读取布尔列的值。使用numpy函数将其转换为数组并打印。现在使用逻辑非(logical_not)在NumPy的数组上反转数组,并再次打印数组。

  • 第四步 – 在数据框中添加一个名为“covidpositive”的新列,并添加反转值。

  • 第五步 – 在命令窗口中运行程序。比较原始值和两个数组中的反转值。

#包含所需的库
import pandas as pd
import numpy as npp

#读取csv文件并创建数据框
dff = pd.read_csv("data.csv")
covidstatus=dff["covidnegative"]
arr01 = covidstatus.to_numpy()
print("\n给定布尔数组:", arr01)
arr_inver = npp.logical_not(arr01)
print("\n反转的布尔数组:", arr_inver)
dff['covidpositive'] = arr_inver.tolist()

#print(dff) 
Bash

输出

在命令窗口中运行Python文件 –

如何在Python中反转布尔数组的元素?

示例4: 不使用Numpy 反转布尔值数组

算法

  • 第一步 – 导入CSV,然后使用csv.DictReader读取具有布尔值列的CSV文件。

  • 第二步 – 制作分别为空的数组,以容纳CSV文件的列值,并将列值附加到这些数组中。

  • 第三步 – 定义一个函数“reverse_bool”,将true转换为false,false转换为true,并返回反转值。

  • 第四步 – 使用map函数使用“reverse_bool”函数将每个false转换为true,true转换为false。

  • 第五步 – 在命令窗口中运行程序。比较两个数组中的原始值和反转值。

#导入所需的库
import csv

#打开文件并读取
with open('data.csv', 'r') as file:
    reader = csv.DictReader(file)
    covidstatus=[]
    #将CSV中的布尔列值附加到一个数组中
    for row in reader:
        covidstatus.append(row['covidnegative'])

#定义函数:翻转true和false
def reverse_bool(value):
    if value=='True':
        return 'False'
    else:
        return 'True'

#将嵌套的列表转换为简单列表
covidstatus=[x for xs in covidstatus for x in xs.split(',')]

#使用map函数反转布尔数组并将其打印
inverted_covidstatus=list(map(reverse_bool, covidstatus))
print("\n翻转后的布尔数组:")
print(inverted_covidstatus) 
Bash

输出

在命令窗口中运行Python文件 –

invertbool3.py
# 导入模块
import csv

# 以只读模式打开文件
filename01 = open('data.csv', 'r')

# 创建 DictReader 对象
file01 = csv.DictReader(filename01)

# 创建空列表
covidstatus = []
name=[]

# 定义反转布尔值的函数
def reverse_bool(status):
   if status == "True":
      return "False"
   elif status == "False":
      return "True"

# 遍历每一行并将值添加到空列表
print('\n从 data.csv 文件的列中构造数组')
for col in file01:
   covidstatus.append(col['covidnegative'])
   name.append(col['patientname'])

# 输出列表
print('\n患者姓名:',name)
print('\nCovid 阴性状态:', covidstatus)

# 反转二进制数组
print('\n从 data.csv 文件的列中反转布尔数组')
resultbool = list(map(reverse_bool, covidstatus))
print('\nCovid 阴性状态:', covidstatus)
print('\nCovid 阳性状态:', resultbool)
Bash

输出

在命令窗口中运行 python 文件 −

如何在Python中反转布尔数组的元素?

在这篇 Python 文章中,通过四个不同的示例,演示了反转布尔数组的方法。前三种方法使用 NumPy 的函数来反转布尔值。然后编写了一个 Python 程序,不使用 numpy 来生成反转的数组。在第一个示例中,还比较了散点图,以显示原始布尔值以及反转后的值。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册