gpt4 book ai didi

python - 无法理解 Matplotlib 中的代码

转载 作者:太空宇宙 更新时间:2023-11-03 18:07:21 25 4
gpt4 key购买 nike

我知道以下代码绘制了一个散点图,并带有自己的标记。我无法理解转换器功能。

转换器函数的一般定义是:将列号映射到将该列转换为 float 的函数的字典。例如,如果第 0 列是日期字符串:转换器 = {0: datestr2num}。转换器还可以用于为缺失数据提供默认值(但另请参见 genfromtxt):转换器 = {3: lambda s: float(s.strip() or 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,杂色鸢尾

最佳答案

您可以使用一个小型测试程序轻松研究 read_label 的行为:

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

或者你look up Python's index method :返回给定元素的列表索引。

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

关于python - 无法理解 Matplotlib 中的代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26601246/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com