Numpy数组掩码字节

2024-05-19 12:24:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直在尝试让简单的numpy屏蔽工作,而不必求助于非numpy函数,然而,我遇到了一个看起来像bug的问题

import numpy as np
origlist = np.array([[b'\x00'] * 100 ] * 128, dtype=np.object)
origlist[0][0] = b'\x00\x00'
newlist = origlist[0][origlist[0] != b'\x00\x00']

[b'\x00\00',b'\x00',b'\x00',…]的形式提供新列表,,其中应以[b'\x00',b'\x00',…]的形式提供新列表

同样地

import numpy as np
origlist = np.array([[b'\x00'] * 100 ] * 128, dtype=np.object)
origlist[0][0] = b'\x00\x00'
newlist = origlist[origlist != b'\x00']

还以[b'\x00\00',b'\x00',b'\x00',…]的形式提供新列表,其中应以[b'\x00\x00']的形式提供

更新

Comparing numpy array of dtype object

我基本上已经尝试了上面帖子中提到的所有东西,但没有任何帮助,所有的比较结果都是正确的。我还尝试用np.full替换初始化,结果相同

我能够让它与numpy版本1.19一起工作的唯一方法是不使用numpy

import numpy as np
origlist = np.full((128,100),b'\x00',dtype=object) #np.object is depreciated
origlist[0][0] = b'\x00\x00'
newlist = origlist[0].tolist()
newlist = list( filter( (b'\x00').__ne__, newlist))

现在返回正确的[b'\x00\x00']

如果有任何其他numpy方法来做这件事,或任何numpy方法来修复这件事,请让我知道


Tags: 方法importnumpy列表objectasnparray