您可以使用np.unique(…,return_inverse =
True)获取每个字符串的代表性整数。例如,
In [117]: uniques, X = np.unique(['foo', 'baz', 'bar', 'foo', 'baz', 'bar'], return_inverse=True)In [118]: XOut[118]: array([2, 1, 0, 2, 1, 0])
请注意,
X具有dtype
int32,因为
np.unique它最多可以处理
2**31唯一的字符串。
import pandas as pdimport numpy as npimport matplotlib.pyplot as pltimport mpl_toolkits.mplot3d.axes3d as axes3dN = 12arr = np.arange(N*2).reshape(N,2)words = np.array(['foo', 'bar', 'baz', 'quux', 'corge'])df = pd.Dataframe(words[arr % 5], columns=list('XY'))df['Z'] = np.linspace(1, 1000, N)Z = np.log10(df['Z'])Xuniques, X = np.unique(df['X'], return_inverse=True)Yuniques, Y = np.unique(df['Y'], return_inverse=True)fig = plt.figure()ax = fig.add_subplot(1, 1, 1, projection='3d')ax.scatter(X, Y, Z, s=20, c='b')ax.set(xticks=range(len(Xuniques)), xticklabels=Xuniques, yticks=range(len(Yuniques)), yticklabels=Yuniques) plt.show()
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)