我知道下面的代码使用它自己的标记绘制了散点图。我无法理解转换器功能。无法理解Matplot库中的代码
转换器函数的一般定义是: 将列号映射到将该列转换为浮点数的函数的字典。例如,如果列0是日期字符串:转换器= {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,虹膜setosa 5.3,3.7,1.5,0.2,虹膜setosa 5.0,3.3 ,1.4,0.2,虹膜setosa 7.0,3.2,4.7,1.4,虹膜云芝 6.4,3.2,4.5,1.5,虹膜云芝
雅我知道了,但转换器在这里做什么。我无法理解 - 转换器= {4:read_label} – MJP 2014-10-29 05:28:57
@ user3796494:它告诉'loadtext'将'read_label'应用于列号4.因此该列中的每个字符串都将被转换为'label_list'中的对应索引。 – Falko 2014-10-29 06:00:20