Numpy 2D数组获取占总数的百分比

2024-06-11 15:44:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我刚开始学numpy

得到下面的np表,并希望计算每个单元格占列总数的百分比

data = np.array([[7,16,17], [12,11,3]])
headers = ["Grundskola", "Gymn", "Akademisk"]

# tabulate data
table = tabulate(data, headers, tablefmt="github")

# output
print(table)

|   Grundskola |   Gymn |   Akademisk |
|--------------|--------|-------------|
|            7 |     16 |          17 |
|           12 |     11 |           3 |

致:

|   Grundskola |   Gymn |   Akademisk |
|--------------|--------|-------------|
|           39%|    59% |         85% |
|           61%|    41% |         15% |

我知道np.sum(data2,axis=0/1)将给出总数,但我如何使用它来计算数组

阵列的大小可以不同


Tags: numpygithuboutputdatanptablearrayheaders
1条回答
网友
1楼 · 发布于 2024-06-11 15:44:13

你可以试试这个。使用^{}覆盖axis = 0并将数组data除以轴0上的和

data = np.array([[7, 16, 17],
                 [12, 11, 3]])

percentages = data/data.sum(axis=0) * 100

percentages
# array([[36.84210526, 59.25925926, 85.        ],
#        [63.15789474, 40.74074074, 15.        ]])

现在,在tabulate函数中使用这个percentages


您可以将^{}格式化为如下格式

perc = data / data.sum(axis=0)
# array([[0.36842105, 0.59259259, 0.85      ],
#        [0.63157895, 0.40740741, 0.15      ]])

print(np.array([[f"{i:.2%}" for i in val] for val in perc]))
# [['36.84%' '59.26%' '85.00%']
#  ['63.16%' '40.74%' '15.00%']]

相关问题 更多 >