我正在尝试绘制分类数据,其中X字段是具有12列作为特征的二维数组。如何在前3000个字段属于1类而其他9000个数据属于2类数据的图形中进行绘制。数据看起来像这样。
[[4.860e+02 1.400e+01 4.700e+01 ... 1.500e+01 0.000e+00 0.000e+00]
[1.897e+03 1.000e+01 3.850e+02 ... 1.200e+01 0.000e+00 0.000e+00]
[1.330e+02 1.500e+01 4.700e+01 ... 1.000e+01 0.000e+00 0.000e+00]
...
[8.700e+01 1.000e+00 1.000e+01 ... 9.800e+01 1.300e+01 1.000e+01]
[5.700e+01 1.000e+00 7.000e+00 ... 9.000e+01 1.700e+01 2.600e+01]
[1.200e+01 0.000e+00 2.000e+00 ... 9.600e+01 7.000e+00 1.200e+01]]
答案 0 :(得分:0)
从您提供的信息中很难理解您的问题。请添加更多信息,以使其更清晰。抱歉,我无法对此发表评论,因为我没有足够的声誉。
所以我将在旁边发布答案。据我了解您的问题,您有一个(9000 x 12)numpy数组,其中12列是变量,而9000行是观察值?您想将数据分为2类,然后将它们以不同的颜色/线条样式/等方式绘制在同一图中?
如果要为数组分配分类(“分类变量”),pandas
将是最佳选择。如果您只想用numpy做到这一点,我会使用类似这样的东西:
import numpy as np
import matplotlib.pyplot as plt
# Sample data
arr = np.random.randn(9000, 12)
# Split data
class_a = arr[:3001, :]
class_b = arr[3001:, :]
# Plot both classes in same plot
fig, ax = plt.subplots(1, 1)
ax.plot(class_a[:, 0], class_a[:, 1]) # Choose columns you want to plot
ax.plot(class_b[:, 0], class_b[:, 1])
如果您使用2个单独的plt.plot
调用,则matplotlib将自动使用新颜色。
使用pandas
和seaborn
的方法将扩展arr
变量:
import pandas as pd
import seaborn as sns
df = pd.DataFrame(arr)
df['Class'] = 'A'
df.Class[3001:] = 'B' # Hacky solution, but got no time to elaborate
sns.lineplot(data=df, x=0, y=1, hue='Class')