gpt4 book ai didi

python - 连续到分类二维数组

转载 作者:行者123 更新时间:2023-12-01 09:19:21 33 4
gpt4 key购买 nike

我想将连续的二维 numpy 数组转换为基于阈值的类别。当我使用 pandas cut 函数时,我首先必须展平为一维数组,然后使用 cut,但输出不会重新整形回使用 numpy reshape 函数进行 2D 绘制。

这是一个简单的例子:

import numpy as np
import pandas as pd

a = np.random.rand(2,3)
print(a)

b = a.flatten()
print(b)

c = pd.cut(b,(0,0.5,1),labels=[0,1])
print(c)

d = np.reshape(c,(2,3))
print(d)

输出为

[[ 0.56887807  0.1368459   0.34892358]
[ 0.77157277 0.64827644 0.42259086]]
[ 0.56887807 0.1368459 0.34892358 0.77157277 0.64827644 0.42259086]
[1, 0, 0, 1, 1, 0]
Categories (2, int64): [0 < 1]
[1, 0, 0, 1, 1, 0]
Categories (2, int64): [0 < 1]

即使在 reshape 命令之后,d 数组仍保持一维。如何将其 reshape 回 2D?

最佳答案

如果您不打算使用 pandas 的 Categorical 功能,您可以简单地使用 np.digitize直接将二维数组转换为分类(整数)值:

应用于简单示例:

c = np.digitize(a, bins=(0.5, 1))
print(c)
# [[1 0 0]
# [1 1 0]]

关于python - 连续到分类二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50931068/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com