Python 如何反转布尔数组

Python 如何反转布尔数组

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

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

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

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

步骤

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

  • 步骤2 - 现在读取data.csv文件,将其转换为数据框,并制作散点图,显示布尔列”covidnegative”在Y轴上。

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

  • 步骤4 - 向数据框中添加一个新列”covidpositive”,并添加反转的值。

  • 步骤5 - 再次制作散点图,显示布尔列”covidpositive”在Y轴上。

  • 步骤6 - 编写显示散点图的函数。使用cmd窗口运行程序。图表将在浏览器中打开一个新标签页。比较两个图表的y轴。

#include the required libraries
import pandas as pd
import numpy as np

#This library is needed to make the scatter plot
import plotly.express as pxx

#read the csv file and make a dataframe
dff = pd.read_csv("data.csv")

#print the colums and data 
#make the scatter plot
figg = pxx.scatter(dff, x="patientname", y="covidnegative")

#set the properties of the scatter plot
figg.update_traces(marker=dict(size=12, line=dict(width=2, color="blue")), selector=dict(mode='markers'))

#display the chart
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)
#make the scatter plot
figg = pxx.scatter(dff, x="patientname", y="covidpositive")

#set the properties of the scatter plot
figg.update_traces(marker=dict(size=12, line=dict(width=2, color="red")), selector=dict(mode='markers'))

#display the chart
figg.show()

输出

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

Python 如何反转布尔数组

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

Python 如何反转布尔数组

Python 如何反转布尔数组

示例2:使用Numpy中的~操作符对布尔值数组进行反转

步骤

  • 步骤1 - 首先导入pandas和numpy

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

  • 步骤3 - 读取布尔列的值。现在使用numpy函数将其转换为数组,然后使用~操作符对numpy数组进行反转。

  • 步骤4 - 向数据框中添加一个新列“covidpositive”,并添加反转后的值。再次打印数据框。

  • 步骤5 - 使用cmd窗口运行程序。比较原始和反转后的布尔列的值。

#include the required libraries
import pandas as pd
import numpy as npp

#read the csv file and make a dataframe
dff = pd.read_csv("data.csv")
print("\nDataframe showing Boolean Value Column in CSV file")
print(dff)
covidstatus=dff["covidnegative"]
arr01 = covidstatus.to_numpy()
print("\nBoolean Column of CSV as array: ")
print(arr01)
inverted_arr01 = ~npp.array(arr01, dtype=bool)
print("\nBoolean Column of CSV as inverted array : ")
print(inverted_arr01)
dff['covidpositive'] = inverted_arr01.tolist()
print("\nNew dataframe with inverted column added :")
print(dff)

输出

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

Python 如何反转布尔数组

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

步骤

  • 步骤1 - 首先导入pandas和numpy。

  • 步骤2 - 现在读取data.csv文件,并将其转换为数据帧。

  • 步骤3 - 读取布尔列的值。现在使用numpy函数将其转换为数组并打印出来。现在使用Numpy的逻辑_not对数组进行反转,并再次打印出来。

  • 步骤4 - 在数据帧中添加新列”covidpositive”并添加反转的值。

  • 步骤5 - 使用cmd窗口运行程序。比较两个数组中的原始值和反转值。

#include the required libraries
import pandas as pd
import numpy as npp

#read the csv file and make a dataframe
dff = pd.read_csv("data.csv")
covidstatus=dff["covidnegative"]
arr01 = covidstatus.to_numpy()
print("\nA given boolean array: ", arr01)
arr_inver = npp.logical_not(arr01)
print("\nThe inverted boolean array: ", arr_inver)
dff['covidpositive'] = arr_inver.tolist()

#print(dff)

输出

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

Python 如何反转布尔数组

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

步骤

  • 步骤1 - 导入CSV并使用csv.DictReader读取具有布尔值列的CSV文件。

  • 步骤2 - 创建单独的空数组来保存CSV文件的列值,并将列值附加到这些数组中。

  • 步骤3 - 定义一个“reverse_bool”函数,将true转换为false,false转换为true,并返回反转的值。

  • 步骤4 - 使用map函数使用“reverse_bool”函数将每个false转换为true,true转换为false。

  • 步骤5 - 在cmd窗口中运行程序。比较两个数组中的原始值和反转值。

invertbool3.py
# importing the module
import csv

# open the file in read mode
filename01 = open('data.csv', 'r')

# creating dictreader object
file01 = csv.DictReader(filename01)

# creating empty lists
covidstatus = []
name=[]
def reverse_bool(status):
   if status == "True":
      return "False"
   elif status == "False":
      return "True"
print('\nMaking the arrays from the columns of data.csv file')
# iterating over each row and append
# values to empty list
for col in file01:
   covidstatus.append(col['covidnegative'])
   name.append(col['patientname'])
# printing lists
print('\nThe patient name:',name)
print('\nCovid -ve Status:', covidstatus)
print('\nReversing the boolean arrays made from the columns of data.csv file')
resultbool = list(map(reverse_bool, covidstatus))
print('\nCovid -ve Status:', covidstatus)
print('\nCovid +ve Status:', resultbool)

输出

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

Python 如何反转布尔数组

本Python文章通过四个不同的示例介绍了反转布尔数组的方法。前三种方法使用NumPy的函数来反转布尔值。然后,编写了一个Python程序,用于在不使用NumPy的情况下创建反转的数组。在第一个示例中,还比较了散点图,以显示布尔原始值以及反转的值。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程