Python 无法理解Matplot库中的代码

Python 无法理解Matplot库中的代码,python,matplotlib,Python,Matplotlib,我知道下面的代码用自己的标记绘制散点图。我无法理解转换器的功能 转换器功能的一般定义为: 将列号映射到将该列转换为浮点的函数的字典。例如,如果列0是日期字符串:converters={0:datestr2num}。转换器还可用于为缺少的数据提供默认值(但也请参见genfromtxt):转换器={3:lambda s:float(s.strip()或0)}。默认值:无 但我无法理解它在以下代码中的作用;read_label函数的作用是什么 import numpy as np import mat

我知道下面的代码用自己的标记绘制散点图。我无法理解转换器的功能

转换器功能的一般定义为: 将列号映射到将该列转换为浮点的函数的字典。例如,如果列0是日期字符串:converters={0:datestr2num}。转换器还可用于为缺少的数据提供默认值(但也请参见genfromtxt):转换器={3:lambda s:float(s.strip()或0)}。默认值:无

但我无法理解它在以下代码中的作用;read_label函数的作用是什么

import numpy as np
import matplotlib.pyplot as plt
label_list = (
b'Iris-setosa',
b'Iris-versicolor',
b'Iris-virginica',
)
def read_label(label):
   return label_list.index(label)

data = np.loadtxt('iris.data.txt', delimiter = ',', converters = { 4 : read_label })

marker_set = ('^', 'x', '.')

for i, marker in enumerate(marker_set):
  data_subset = numpy.asarray([x for x in data if x[4] == i])

plt.scatter(data_subset[:,0], data_subset[:,1], color = 'k', marker = marker)
plt.show()
iris.data.txt文件由以下数据组成:

4.6,3.2,1.4,0.2,刚毛鸢尾 5.3,3.7,1.5,0.2,刚毛鸢尾 5.0,3.3,1.4,0.2,刚毛鸢尾 7.0,3.2,4.7,1.4,虹膜花色
6.4,3.2,4.5,1.5,Iris versicolor

您可以通过一个小型测试程序轻松调查
读取标签的行为:

label_list = (
b'Iris-setosa',
b'Iris-versicolor',
b'Iris-virginica',
)

def read_label(label):
    return label_list.index(label)

print read_label("Iris-setosa")
print read_label("Iris-versicolor")
print read_label("Iris-virginica")
输出:

0
1
2
或者:它返回给定元素的列表索引


请注意,如果请求列表中不存在的元素,则会得到一个
ValueError
。在这种情况下,您可能需要使用
find

Ya我知道了,但是转换器在这里做什么呢。我无法理解-converters={4:read_label}@user3796494:它告诉
loadtext
read_label
应用到第4列。因此,该列中的每个字符串都将转换为
label\u list
中相应的索引。