import numpy as np
import matplotlib.pyplot as plt
# test data
y = np.random.randint(2800, 3100, size=(100,))
x = np.arange(0, 100)
# create a Boolean array (a mask), possibly negate it using the "~" unary operator
ygt3000 = y>3000
plt.scatter(x[~ygt3000], y[~ygt3000], color='blue')
plt.scatter(x[ygt3000], y[ygt3000], color='red')
如果你使用的是***真实的***列表,它会稍微复杂一些,但是可以使用列表解析来完成
x = x.tolist()
y = y.tolist()
ygt3000 = [val>3000 for val in y]
plt.scatter([xv for xv, ygt in zip(x, ygt3000) if not ygt],
[yv for yv, ygt in zip(y, ygt3000) if not ygt], color='blue')
plt.scatter([xv for xv, ygt in zip(x, ygt3000) if ygt],
[yv for yv, ygt in zip(y, ygt3000) if ygt], color='red')
1条答案
按热度按时间sf6xfgos1#
如果你使用的是Numpy的ndarrays,那么就更简单了
如果你使用的是***真实的***列表,它会稍微复杂一些,但是可以使用列表解析来完成
这里它是上述代码应用于两个随机数序列时的结果。
2021年8月,因为特伦顿·麦金尼做了一个漂亮的编辑(谢谢特伦顿)这个帖子再次引起了我的注意,我看到了光明
仅仅一天后,我意识到类似的壮举可以用在Numpy上,利用 * 高级索引 *
但老实说,我更喜欢我以前使用的两遍方法,因为它更切中要害,传达的意思也更多。或者,换句话说,后者看起来像是混淆的代码……