python - 如何将 bools 的 numpy 记录数组转换为整数以计算协方差?

标签 python numpy covariance

我有大约 40 个维度的大约 50 万个条目的记录数组。维度是数据类型的混合。我想子选择 5 个 bool 维度并获取大约 1k 个条目的 block ,然后计算协方差矩阵以查看维度相关性。我完全不知道如何使用 .view().astype() 来进行这种转换。初始子选择:

p_new[['no_gender', 'no_age', 'no_income', 'no_politics', 'no_edu']]
array([(False, False, True, False, False), (True, True, False, True, True),
       (True, True, False, True, True), ...,
       (True, True, True, True, True), (True, True, True, True, True),
       (True, True, True, True, True)], 
      dtype=[('no_gender', '|b1'), ('no_age', '|b1'), ('no_income', '|b1'), ('no_politics', '|b1'), ('no_edu', '|b1')])

我所有的转换尝试都将我的 5 个维度压缩为 1 个(不需要的!),而不是从 (1000,5) dtype=np.bool(1000,5) dtype=np.int32 我最终得到 (1000,1) dtype=np.int32

最佳答案

我猜你的问题是当你改变类型时你对整行进行操作。 如果你看成一个bool的数组,你就得到了所有的值,然后你就可以做astype了。但是,您必须 reshape 。

pnew.view("bool").astype(int).reshape(len(pnew),-1)

使用 .tolist() 更简单,但可能会占用更多内存并且速度可能更慢。

asarray(pnew.tolist()).astype(int)

关于python - 如何将 bools 的 numpy 记录数组转换为整数以计算协方差?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13805476/

相关文章:

inheritance - 如果 Car 是 Vehicle 的子类型,为什么 Vehicle->void 被视为 Car->void 的子类型?

C++ 协变模板

python - celery 结果错误 "args must be a list or tuple"

python - 如何找到可以将新项目插入排序列表并保持排序的索引?

python - 从不均匀的 numpy 数组中获取转置和/或从不均匀的 numpy 数组中获取平均值

python - 如何使 append 按预期与数组一起工作?

python - 如何将 exec 的输出设置为变量 python?

python multiprocessing无法控制多个长时间运行的控制台exe?

python - 屏蔽将 nan 评估为 True 的 numpy 数组

C++11 std::function 不接受多态参数