Tôi tự hỏi liệu có ai biết cách vector hóa tính năng băm trong Python không. Ví dụ, đây là mã của tôi:Hiện tượng băm hóa tính năng băm trong python
import numpy as np
hashlen = 5
x = np.array([4, 7, 4, 2, 6, 8, 0, 6, 3, 1])
h = np.array([0, 3, 1, 2, 4, 2, 1, 0, 3, 1])
Trong tính năng băm, h đại diện các chỉ số của vector mới Tôi băm x để, tức là chỉ số 0 của vector băm nên có 4 và 6 tóm tắt, chỉ số 1 nên có 4, 0 và 1 tóm tắt vv Kết quả là vector băm nên là:
w = np.array([ 10, 5, 10, 10, 6])
Một cách để làm điều này là dĩ nhiên bởi vòng lặp thông qua các chỉ số băm, ví dụ:
for itr in range(hashlen):
w[itr] = np.sum(x[np.where(h==itr)])
Đối với các vectơ lớn, độ phức tạp là hàm của hàm băm (chiều dài của vectơ băm). Nó có thể mất quá nhiều thời gian, đặc biệt là với một np.where() trong đó.
tôi muốn làm một cái gì đó như:
w = np.zeros(hashlen)
w[h]+= x
Tuy nhiên, kết quả của việc này là giống như làm
w = np.zeros(hashlen)
w[h] = x
bất cứ ai có thể cho tôi biết nếu tôi là thiếu cái gì ở đây? Hoặc nếu có một cách 'dễ dàng' để thực hiện băm tính năng không liên quan đến quá nhiều tính toán?
Chính xác những gì tôi đang tìm kiếm. Cám ơn rất nhiều! –
Chỉ tò mò - có thể làm điều gì đó như thế trên ma trận thay vì vectơ không? Không có vòng lặp của khóa học. –
Đã cập nhật cho ma trận. Có một số cách khác nếu bạn đang tìm kiếm một thứ khác. – Daniel