如何有效地在Python中创建和处理4D稀疏矩阵

时间:2017-03-31 12:09:19

标签: python matrix sparse-matrix

我有一个4D稀疏形状矩阵(21x21x21x21)。只有一个元素将被设置为1.之后,我将向量化该矩阵并确定非零行。整个过程大约需要6分钟来计算太长时间。有没有办法在Python中有效地做到这一点?

sparseMatrix = np.zeros((21,21,21,21), dtype = np.int8)
#w,x,y,z can be any random integer from 0 to 20.
w = 3
x = 5
y = 18
z = 16
sparseMatrix[w, x, y, z] = 1
sparseMatrix_vec = np.reshape(sparseMatrix, [-1,1])
sparseMatrix_vec_index = np.nonzero(sparseMatrix_vec)[0][0]

1 个答案:

答案 0 :(得分:1)

如果需要(w,x,y,z)形成一个唯一的整数,其中(w,x,y,z)中的每一个都可以在0到20之间变化,那么只需使用基数21表示。您要查找的整数是:

N = w *(21 ** 0)+ x *(21 ** 1)+ y *(21 ** 2)+ z *(21 ** 3)。

给定一个整数,您可以使用整数除法和模数返回(w,x,y,z)。