Конвертировать pandas столбцы массивов в измененный np.array - PullRequest
0 голосов
/ 26 сентября 2018

У меня есть следующий кадр данных панд:

col1    col2    col3

    2   [0.006576649077136777, 0.0030259599523339924, ...   [0.00567579212503948, -0.005498750236370691, 0...   [-0.015786838188947716, 0.0042899171402874135,...
    3   [-0.44547847984244543, -0.4482984342731749, 0....   [-0.022185524120646238, -0.38181444829591676, ...   [-0.015786838188947716, 0.0042899171402874135,...
    4   [-0.0014395623253532755, 0.0030226929032053595...   [0.0035941013456355217, 0.0047566422661906695,...   [-0.015786838188947716, 0.0042899171402874135,...
    5   [0.00967978470638314, 0.011863989585765296, -0...   [-0.011894506407398607, -0.003642684750775637,...   [-0.015786838188947716, 0.0042899171402874135,...

Они представляют векторы, которые мне нужно будет вписать в DBSCAN.Однако мне трудно преобразовать их в матрицу, поскольку каждая попытка преобразует их в матрицу массивов, как я могу преобразовать их в матрицу 90 на 7190?

Вот что я пробовал:

np.asarray(df_vec[[col for col in df_vec.columns.values]]).reshape((90,7190))

и вот что у меня есть

array([[array([ 0.00657665,  0.00302596, -0.01135427, -0.00063256, -0.00735737,
        0.00150661,  0.00318936,  0.00109255,  0.00557719,  0.00958158,
        0.00103098,  0.00706684,  0.00597235, -0.00502784,  0.00395275,
        0.01183221, -0.00067338,  0.0042127 , -0.00281012, -0.00501378,
       -0.00103368, -0.00374887,  0.01158366,  0.00259053, -0.00764409,
       -0.00156182, -0.0018044 ,  0.01153042,  0.00258852,  0.00294213]),
        array([-0.44547848, -0.44829843,  0.42276216, -0.22452319, -0.36380471,

1 Ответ

0 голосов
/ 26 сентября 2018

Вопрос не совсем ясен, но если я правильно понял, у вас есть это:

df = pd.DataFrame({
        "col1": [np.random.rand(7190) for i in range(30)],
        "col2": [np.random.rand(7190) for i in range(30)],
        "col3": [np.random.rand(7190) for i in range(30)]
        })

Теперь вам просто нужно снять стекирование, чтобы получить набор данных, готовый к DBSCAN:

unstacked = np.array(df.unstack().tolist())

это дает вам нужную форму:

print(unstacked.shape)

(90, 7190)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...