首页 > 解决方案 > 一维元组到二维numpy数组

问题描述

使用以下条件将元组转换为 Numpy 矩阵:

例如,我有一个随机元组,如下所示:

# index means row ,value means col
(2,0,1)

我使用两个循环将此元组更改为 Numpy 数组:

def get_np_represent(result):
    two_D = []
    for row in range(len(result)):
        one_D = []
        for col in range(len(result)):
            if result[row] == col:
                one_D.append(1)
            else:
                one_D.append(0)
        two_D.append(one_D)
    return np.array(two_D)

输出:

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

但是我有 10,000,000 个这样的元组,有没有更快的方法?

标签: python-3.xnumpy

解决方案


像这样的东西?操作矩阵比 for 循环要快得多。

import numpy as np

t = (2, 0, 1)
x = np.zeros([len(t),len(t)])

for i,v in enumerate(t):
    x[i, v] = 1

print(x)

输出:

[[0. 0. 1.]
 [1. 0. 0.]
 [0. 1. 0.]]

推荐阅读