np.asarray转化list为numpy数组的坑

问题是这样的,有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但是位数和符号相同的话,可能只有数值精度上的区别了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值