Первым шагом обязательно удалите столбцы «timestamp» и «ID» и убедитесь, что он не относится к типу string
.Я не думаю, что вы можете иметь массив numpy
, который выглядит как ваш пример (за исключением соединения dtype
, которое усложняет задачу).Для «ID» вы должны разделить другой «ID» на другой массив, например:
a = yourArray[yourArray[1]==144]
b = yourArray[yourArray[1]==1428]
c = yourArray[yourArray[1]==1680]
Я собираюсь сделать некоторые случайные данные, поскольку у меня нет ваших данных:
a = np.random.randint(0, 256, (16, 8), 'B')
a
должен выглядеть следующим образом:
array([[ 46, 74, 78, 41, 46, 173, 188, 157],
[164, 199, 135, 162, 101, 203, 86, 236],
[145, 32, 40, 165, 47, 211, 187, 7],
[ 90, 89, 98, 61, 248, 249, 210, 245],
[169, 116, 43, 6, 74, 171, 103, 62],
[168, 214, 13, 173, 71, 195, 69, 8],
[ 33, 1, 38, 115, 1, 111, 251, 90],
[233, 232, 247, 118, 111, 83, 180, 163],
[130, 86, 253, 177, 218, 125, 173, 137],
[227, 7, 241, 181, 86, 109, 21, 59],
[ 24, 204, 53, 46, 172, 161, 248, 217],
[132, 122, 37, 184, 165, 59, 10, 40],
[ 85, 228, 6, 114, 155, 225, 128, 42],
[229, 7, 61, 76, 31, 221, 102, 188],
[127, 51, 185, 70, 17, 138, 179, 57],
[120, 118, 115, 131, 188, 53, 80, 208]], dtype=uint8)
После этого вы можете просто:
abs(np.diff(np.unpackbits(a, 1).view('b'), axis=0)).sum(0)
, чтобы получить количество изменений в направлении строки, соответствующих каждому биту:
array([ 7, 9, 7, 7, 9, 12, 10, 6, 7, 8, 8, 7, 7, 6, 7, 9, 8,
7, 11, 9, 8, 7, 5, 7, 7, 9, 6, 9, 8, 7, 9, 7, 6, 10,
8, 12, 5, 5, 5, 9, 7, 9, 8, 12, 9, 8, 5, 5, 5, 8, 10,
10, 7, 6, 7, 8, 7, 8, 5, 5, 11, 7, 6, 8])
Это массив (64,)
, соответствующий ID=144
.Чтобы получить результат (3, 64)
, объедините три результата, например:
np.array((aResult, bResult, cResult))