在以下条件下将元组转换为Numpy矩阵:
len(tuple)
x len(tuple)
,即正方形矩阵。(index of the element in the tuple, the value of the element in the tuple)
指定的位置的数组中的元素应该是一个。例如,我有一个随机元组,如下所示:
# 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个这样的元组,有没有更快的方法?
答案 0 :(得分:3)
像这样?操纵矩阵比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.]]
答案 1 :(得分:3)
例如(从Ke设置)
t = (2, 0, 1)
x = np.zeros([len(t),len(t)])
x[np.arange(len(x)),t]=1
x
Out[145]:
array([[0., 0., 1.],
[1., 0., 0.],
[0., 1., 0.]])