Вы можете создать словарь, отображающий значения вашего первого столбца в списки, а затем заполнять эти списки при выполнении итерации по матрице:
from collections import defaultdict
matrix = [[7.0, 1042.3784354104064, 1041.8736266399212, 0.0],
[7.0, 567.603384919274, 566.8152346188947, 0.0],
[8.0, 709.5076838990026, 709.3588638367074, 0.0],
[8.0, 386.811514883702, 386.6412338380912, 0.0]]
dd = defaultdict(list)
for key, *values, discard in matrix:
dd[key].extend(values)
result = list(dd.values())
print(result)
# [[1042.3784354104064, 1041.8736266399212, 567.603384919274, 566.8152346188947],
# [709.5076838990026, 709.3588638367074, 386.811514883702, 386.6412338380912]]
Вот простое решение на основе этого ответа
import numpy as np
mat = np.loadtxt('file.txt')
indices = np.cumsum(np.unique(mat[:, 0], return_counts=True)[1])[:-1]
result = np.array(np.split(mat[:, 1:-1], indices)).reshape((len(indices)+1, -1))
print(result)
# [[1042.37843541 1041.87362664 567.60338492 566.81523462]
# [ 709.5076839 709.35886384 386.81151488 386.64123384]]