공부한 것들
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))