我使用数组作为数据来计算熵,如
[0.537, 0.073, 0.001]
[0.281, 0.613, 0.003]
[0.172, 0.523, 0.133]
我制作了for循环来计算熵并将其列出
for i in range(57):
result = []
result.append(i)
result.append(-np.nansum(dfarray[i, :]*np.log(dfarray[i, :])))
print(result)
输出为
[0, 1.1937696641805506]
[1, 1.2128888001894198]
[2, 1.4231436967180882]
[3, 1.0475158758059124]
[4, 1.0068787695067478]
[5, 1.376627284143999]
[6, 1.2185719504888797]
[7, 1.1286096703354938]
[8, 1.106661815260767]
[9, 1.1017521697210102]
[10, 1.2370674649681535]
[11, 1.1944921044993193]
[12, 0.8539017107504977]
[13, 1.019046911152208]
[14, 0.9981092532222372]
[15, 1.116446236508542]
[16, 1.2665183315076298]
[17, 1.2006513624778945]
[18, 1.213665824664524]
[19, 1.2870090807203525]
...
我想像这样将输出输出到熊猫数据框
1
0 1.1937696641805506
1 1.2128888001894198
2 1.4231436967180882
3 1.0475158758059124
4 1.0068787695067478
5 1.376627284143999
plz帮助...
答案 0 :(得分:2)
import pandas as pd
df = pd.DataFrame(result[:,1])
这将创建一个像这样的数据框:
0
0 1.193770
1 1.212889
2 1.423144
3 1.047516
4 1.006879
5 1.376627
如果要调用“熵”列而不是“ 0”,只需将行更改为:
df = pd.DataFrame({"Entropy":result[:,1]} )
答案 1 :(得分:1)
如果您不确定如何将结果放入数组中,请参见完整代码。
dfarray = np.array([[0.537, 0.073, 0.001], [0.281, 0.613, 0.003], [0.172, 0.523, 0.133]])
final_result = []
for i in range(len(dfarray)):
result = []
result.append(i)
result.append(-np.nansum(dfarray[i, :]*np.log(dfarray[i, :])))
final_result.append(result)
df = pd.DataFrame({"Entropy": np.array(final_result)[:,1]})