我正在用Python3做我的第一步,所以我不确定如何解决以下任务 . 我想计算一个numpy数组中每个位随时间变化的频率,我的数组看起来像这样:
第一栏:时间戳;第二栏:ID;倒数第三列:byte8,...,byte2,byte1,byte0(每字节8位)
[[0.009469 144 '00001001' ... '10011000' '00000000' '00000000']
[0.01947 144 '00001000' ... '10011000' '00000000' '00000001']
[0.029468 144 '00001001' ... '10011000' '00000000' '00000011']
...
[0.015825 1428 '11000000' ... '01101101' '00000000' '00000001']
[0.115823 1428 '11000000' ... '01101100' '00000000' '00000000']
[0.063492 1680 '01000000' ... '00000000' '00000000' '00000000']]
任务是计算每个ID随时间的位变化 . 结果应如下所示(可以忽略时间戳):
每个ID包含一行:
第一栏:ID;第二列到第65列(更改位数bit64,更改位数63,...更改位数1,更改位数bit0)
所以在这个简短的例子中,应该有一个包含3行(ID144,ID1428和ID1680)和65列的结果数组 .
你知道怎么做到这一点吗?
1 回答
第一步肯定是删除"timestamp"和"ID"列,并确保它不是
string
类型 . 我不认为你 can 有一个看起来像你的例子的numpy
数组(除了复合dtype
,这使事情变得复杂) . 对于"ID",您应该将不同的"ID"分隔为不同的数组,例如:因为我没有你的数据,所以我会在这里做一些随机数据:
a
应该是这样的:之后,您可以简单地:
获取与每个位对应的行方向的更改数:
这是一个与
ID=144
对应的形状(64,)
数组 . 为了得到结果(3, 64)
,连续三个结果如下: