gpt4 book ai didi

Python:从两个列表中将数据透视表创建为 numpy 二维数组

转载 作者:行者123 更新时间:2023-12-05 05:36:52 24 4
gpt4 key购买 nike

我有以下列表。

list_1 = ["A", "B", "C"]
list_2 = ["D", "A", "B"]

我想创建一个 numpy 2d-array这将用作数据透视表。列应该是 list_1 中的值,行应该是 list_2 中的值,值应该是 bool 值,表示值是否相等。结果应如下所示。

array([[0., 0., 0.],
[1., 0., 0.],
[0., 1., 0.]])

我设法自己编写了代码,但我认为我的解决方案不是最优雅的解决方案。我希望有一些内置的 numpy 函数可以让事情变得更简单。你能帮我解决这个问题吗?

我的代码如下。

import numpy as np

list_1 = ["A", "B", "C"]
list_2 = ["D", "A", "B"]

my_array = np.zeros((len(list_2), len(list_1)))

for i, val in enumerate(list_2):
my_array[i] = val == np.array(list_1)

print(my_array)

最佳答案

使用 numpy 广播:

list_1 = ["A", "B", "C"]
list_2 = ["D", "A", "B"]

my_array = (np.array(list_1) == np.array(list_2)[:,None]).astype(int)

输出:

array([[0, 0, 0],
[1, 0, 0],
[0, 1, 0]])

注意。如果你真的想要 bool 值(真/假),请省略 .astype(int):

array([[False, False, False],
[ True, False, False],
[False, True, False]])

关于Python:从两个列表中将数据透视表创建为 numpy 二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73235807/

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