공부한 것들

Numpy stack from empty ndarray

daeheepark 2020. 4. 21. 00:38

처음에 빈 array인 numpy.array([ ]) 를 정의해 놓고 for loop 안에서 numpy.stack을 이용해 쌓아줘야할 때가 있다.

 

하지만 빈 행렬에 (n,1) 차원의 벡터를 쌓으려고 할 때 에러가 발생한다.

ValueError: all the input array dimensions except for the concatenation axis must match exactly

차원이 맞지 않는 array를 쌓을 수 없다는 것이다.

 

이 경우에 처음에 빈 array를 numpy.array([ ]).reshape(n,-1) 로 초기화시켜주고,

쌓을 array도 reshape(n,1)로 바꿔서 쌓으면 에러 없이 for loop 안에서 array를 쌓을 수 있다.

 

C = len(doc_to_shingles)
M = len(a_vec)
signatures = np.array([]).reshape(100,-1)

for key, value in doc_to_shingles.items():
  value_vec = np.array(value, dtype=np.int64).reshape(1,len(value))
  a = np.dot(a_vec, value_vec)
  b = np.add(a, b_vec)
  p = np.mod(b, p_vec)
  sig_i = np.mod(p, N)
  sig_i = np.min(sig_i, axis=1).reshape(M,1)
  signatures = np.hstack((signatures,sig_i))