我正在尝试学习scikit学习(sklearn)。以下是尝试从虹膜数据集中使用statsmodels.api创建数据框的代码的一部分。
但是我不确定for循环的工作方式以及sci-kit中iris.target_names[x]
和target
的数据类型。有人可以解释吗?
from sklearn import datasets ## Get dataset from sklearn
## Import the dataset from sklearn.datasets
iris = datasets.load_iris()
## Create a data frame from the dictionary
species = [iris.target_names[x] for x in iris.target]
答案 0 :(得分:2)
这在功能上等同于以下内容:
species = []
for x in iris.target:
species.append(iris.target_names[x])
实质上,它是在可迭代元素的每个元素x上应用一个函数,并从结果中创建一个列表。
以这种方式对列表执行操作的速度比前面提到的方法稍快,并且更具可读性(在我看来)。
答案 1 :(得分:1)
这是列表理解,确实如此
Assert.assertThat(response.getStatusCode(), Matchers.equalTo(HttpStatus.OK));
String jsonBody = response.getBody();
Assert.assertThat(jsonBody, JsonPathMatchers.hasJsonPath("$[0].expiry", Matchers.equalTo("2080-06-26T06:00:00.000+0000")));
Assert.assertThat(jsonBody, JsonPathMatchers.hasJsonPath("$[0].activation", Matchers.equalTo("2019-06-26T22:33:14.849+0000")));
Assert.assertThat(jsonBody, JsonPathMatchers.hasJsonPath("$[0].permitId", Matchers.equalTo("CS383UA")));
Assert.assertThat(jsonBody, JsonPathMatchers.hasJsonPath("$[0].plateNumber", Matchers.equalTo("VGZ05")));
Assert.assertThat(jsonBody, JsonPathMatchers.hasJsonPath("$[0].plateState", Matchers.equalTo("AB")));
species = []
for x in iris.target:
val = iris.target_names[x]
species.append(val)
从for
列中获取值,并分配给iris.target
,然后使用此x
从x
列中获取值并将此值附加在“物种”列表上。
因此它将值iris.target_names
转换为值target