我不明白第二个支架是如何工作的
I don't understand how the second bracket works
这段代码用于绘制一系列数据,通过它们所属的 类 着色。 X_train
是一个数组 (115,2)
,Y_train
是另一个数组 (115,)
,它们具有各自的范围值。我的问题是 [Y_train == i]
到底做了什么?
colors = ["red", "greenyellow", "blue"]
for i in range(len(colors)):
xs = X_train[:, 0][Y_train == i]
ys = X_train[:,1][Y_train == i]
plt.scatter(xs, ys, c = colors[i])
plt.legend(iris.target_names)
plt.xlabel("Sepal length")
plt.ylabel("Sepal width")
python 中的布尔值只是整数的子类。
Y_train == i
只是评估为 False
或 True
,然后分别用于访问索引 0
或 1
。
>>> a = ['this string is at index 0', 'this string is at index 1']
>>> a[True]
'this string is at index 1'
>>> a[False]
'this string is at index 0'
>>> a[1 + 2 == 3] # true
'this string is at index 1'
当您在 NumPy 中执行比较时,例如 Y_train == i
结果是一个布尔掩码,即当值匹配 [=18 时,数组中的每个条目都包含 True
的数组=],并且 False
代表每个其他值。
因此,例如,使用像这样的简单数组:
y = np.array([1,2,1,3])
如果您查看 y == 1
,结果是:
array([True, False, True, False])
以简单数组为例:
x = np.array([[1,2],[3,4],[5,6],[7,8]])
x
Out[10]:
array([[1, 2],
[3, 4],
[5, 6],
[7, 8]])
您首先一次对一列进行切片,例如:
x[:, 0]
Out[11]: array([1, 3, 5, 7])
然后应用布尔掩码,returns 只有该列中的值在 y == 1
布尔掩码中也有 True
:
x[:, 0][y == 1]
Out[14]: array([1, 5])
所以上面的结果和下面的完全一样:
x[:, 0][[True, False, True, False]]
Out[16]: array([1, 5])
这段代码用于绘制一系列数据,通过它们所属的 类 着色。 X_train
是一个数组 (115,2)
,Y_train
是另一个数组 (115,)
,它们具有各自的范围值。我的问题是 [Y_train == i]
到底做了什么?
colors = ["red", "greenyellow", "blue"]
for i in range(len(colors)):
xs = X_train[:, 0][Y_train == i]
ys = X_train[:,1][Y_train == i]
plt.scatter(xs, ys, c = colors[i])
plt.legend(iris.target_names)
plt.xlabel("Sepal length")
plt.ylabel("Sepal width")
python 中的布尔值只是整数的子类。
Y_train == i
只是评估为 False
或 True
,然后分别用于访问索引 0
或 1
。
>>> a = ['this string is at index 0', 'this string is at index 1']
>>> a[True]
'this string is at index 1'
>>> a[False]
'this string is at index 0'
>>> a[1 + 2 == 3] # true
'this string is at index 1'
当您在 NumPy 中执行比较时,例如 Y_train == i
结果是一个布尔掩码,即当值匹配 [=18 时,数组中的每个条目都包含 True
的数组=],并且 False
代表每个其他值。
因此,例如,使用像这样的简单数组:
y = np.array([1,2,1,3])
如果您查看 y == 1
,结果是:
array([True, False, True, False])
以简单数组为例:
x = np.array([[1,2],[3,4],[5,6],[7,8]])
x
Out[10]:
array([[1, 2],
[3, 4],
[5, 6],
[7, 8]])
您首先一次对一列进行切片,例如:
x[:, 0]
Out[11]: array([1, 3, 5, 7])
然后应用布尔掩码,returns 只有该列中的值在 y == 1
布尔掩码中也有 True
:
x[:, 0][y == 1]
Out[14]: array([1, 5])
所以上面的结果和下面的完全一样:
x[:, 0][[True, False, True, False]]
Out[16]: array([1, 5])