I have a NumPy matrix
C and want create a copy of it
cPrime, which has some operation of the original matrix to all non-zero values of it. In the code below, for each non-zero element of
C, I multiply by 30 and then add 1:
import numpy as np size = 6 C = np.zeros((size,size), dtype=int) C = 2 C = 5 C = 3 C = 1 C = 1 C = 1 C = 3 cPrime = np.zeros((size, size),dtype=int) for i in range(size): for j in range(size): if C[i][j] != 0: cPrime[i][j] = C[i][j]*30 + 1
This code works, but it feels inefficient. I'm about 99% sure that there's a really efficient way to achieve this goal, maybe using a masked array, but I haven't been able to figure it out.