问题是这样的,有1个元素互相不重复的list,然后我手动将其转化成了np数组,代码如下:
pearson_filtered_feats_idxes = np.asarray(pearson_filtered_feats_idxes, dtype=np.uint8)
结果发现转化后的这个数组突然出现重复元素了,且手动测试了一下发现转化后的数组与原来的list元素都不相等。。。。
pearson_filtered_feats_idxes_cp = np.asarray(pearson_filtered_feats_idxes,dtype=np.uint8)
print( pearson_filtered_feats_idxes == pearson_filtered_feats_idxes_cp )
print( (pearson_filtered_feats_idxes == pearson_filtered_feats_idxes_cp).nonzero()[0] )
print( len((pearson_filtered_feats_idxes == pearson_filtered_feats_idxes_cp).nonzero()[0]) )
打印了一下转化之前和转化成np数组之后的元素如下,发现都不一样:
解决办法:删除了 dtype=np.uint8直接采用默认的转化(通过打印发现是np.int32)就可以了, 就好啦。之所以前面想要设置成np.uint8类型,是因为后面需要它来作为索引,自以为只要是整数类型就可以了。结果发现其会影响到具体值的读取,毕竟 (位数 + 无符号/有符号) 与数据的读取和写入有很大的关系啊,如果是int或者float但是位数和符号相同的话,可能只有数值精度上的区别了。