Python - 如何从 numpy 数组构建一个新矩阵?



我在矩阵中转换列表时遇到了麻烦。

我的 np.array 是 :

import numpy as np
tab2D1 = np.array([["2020-06-05", "grep"],["2020-06-06", "mkdir"],["2020-06-06", "rm"],
["2020-06-05", "cat"],["2020-06-06", "grep"],["2020-06-07", "awk"],
["2020-06-07", "rm"],["2020-06-07", "echo"],["2020-06-05", "grep"],
["2020-06-05", "awk"]])

在输出中,我想要一个新的矩阵,例如:

grep mkdir  rm  cat  awk  echo
2020-06-05    2    0    0    1    1    0
2020-06-06    1    1    1    0    0    0
2020-06-07    0    0    1    0    1    1

我尝试过Vstack,Hstack,但我不满意。 治疗后,我将使用 Matplotlib 库显示结果

你可以使用pd.crosstab对 Pandas 执行此操作:

import numpy as np
import pandas as pd
tab2D1 = np.array([["2020-06-05", "grep"],["2020-06-06", "mkdir"],["2020-06-06", "rm"],
["2020-06-05", "cat"],["2020-06-06", "grep"],["2020-06-07", "awk"],
["2020-06-07", "rm"],["2020-06-07", "echo"],["2020-06-05", "grep"],
["2020-06-05", "awk"]])
df = pd.crosstab(tab2D1[:, 0], tab2D1[:, 1])
print(df)
# col_0       awk  cat  echo  grep  mkdir  rm
# row_0
# 2020-06-05    1    1     0     2      0   0
# 2020-06-06    0    0     0     1      1   1
# 2020-06-07    1    0     1     0      0   1

这对熊猫来说太简单了。

import numpy as np
import pandas as pd
tab2D1 = np.array([["2020-06-05", "grep"],["2020-06-06", "mkdir"],["2020-06-06", "rm"],
["2020-06-05", "cat"],["2020-06-06", "grep"],["2020-06-07", "awk"],
["2020-06-07", "rm"],["2020-06-07", "echo"],["2020-06-05", "grep"], 
["2020-06-05", "awk"]])
df = pd.crosstab(tab2D1[:, 0], tab2D1[:, 1])
print(df)
# col_0       awk  cat  echo  grep  mkdir  rm
# row_0
# 2020-06-05    1    1     0     2      0   0
# 2020-06-06    0    0     0     1      1   1
# 2020-06-07    1    0     1     0      0   1

多谢。

最新更新