Re: [Numpy-discussion] how to set a fixed sized dtype suitable for bitwise operations
On Tue, Apr 28, 2015 at 7:00 AM, Benjamin Root ben.r...@ou.edu wrote: I have a need to have a numpy array of 17 byte (more specifically, at least 147 bits) values that I would be doing some bit twiddling on. I have found that doing a dtype of i17 yields a dtype of int32, which is completely not what I intended. Doing 'u17' gets an data type not understood. I have tried 'a17', but then bitwise_or() and left_shift() do not work (returns NotImplemented). How should I be going about this? The correct type to use would be a void dtype: dt = np.dtype('V17') dt.itemsize 17 Unfortunately, it does not support bitwise operations either, which seems like an oddity to me: a = np.empty(2, dt) a[0] = 'abcdef' a[1] = bytearray([64, 56, 78]) a[0] | a[1] Traceback (most recent call last): File stdin, line 1, in module TypeError: unsupported operand type(s) for |: 'numpy.void' and 'numpy.void' Any fundamental reason for this? Jaime -- (\__/) ( O.o) ( ) Este es Conejo. Copia a Conejo en tu firma y ayúdale en sus planes de dominación mundial. ___ NumPy-Discussion mailing list NumPy-Discussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpy-discussion
[Numpy-discussion] how to set a fixed sized dtype suitable for bitwise operations
I have a need to have a numpy array of 17 byte (more specifically, at least 147 bits) values that I would be doing some bit twiddling on. I have found that doing a dtype of i17 yields a dtype of int32, which is completely not what I intended. Doing 'u17' gets an data type not understood. I have tried 'a17', but then bitwise_or() and left_shift() do not work (returns NotImplemented). How should I be going about this? Cheers! Ben Root ___ NumPy-Discussion mailing list NumPy-Discussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpy-discussion
Re: [Numpy-discussion] how to set a fixed sized dtype suitable for bitwise operations
Yeah, I am not seeing any way around it at the moment. I guess I will have to use the bitarray package for now. I was hoping for some fast per-element processing, but at the moment, I guess I will have to sacrifice that just to have something that worked correctly. Ben Root On Tue, Apr 28, 2015 at 10:19 AM, Jaime Fernández del Río jaime.f...@gmail.com wrote: On Tue, Apr 28, 2015 at 7:00 AM, Benjamin Root ben.r...@ou.edu wrote: I have a need to have a numpy array of 17 byte (more specifically, at least 147 bits) values that I would be doing some bit twiddling on. I have found that doing a dtype of i17 yields a dtype of int32, which is completely not what I intended. Doing 'u17' gets an data type not understood. I have tried 'a17', but then bitwise_or() and left_shift() do not work (returns NotImplemented). How should I be going about this? The correct type to use would be a void dtype: dt = np.dtype('V17') dt.itemsize 17 Unfortunately, it does not support bitwise operations either, which seems like an oddity to me: a = np.empty(2, dt) a[0] = 'abcdef' a[1] = bytearray([64, 56, 78]) a[0] | a[1] Traceback (most recent call last): File stdin, line 1, in module TypeError: unsupported operand type(s) for |: 'numpy.void' and 'numpy.void' Any fundamental reason for this? Jaime -- (\__/) ( O.o) ( ) Este es Conejo. Copia a Conejo en tu firma y ayúdale en sus planes de dominación mundial. ___ NumPy-Discussion mailing list NumPy-Discussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpy-discussion ___ NumPy-Discussion mailing list NumPy-Discussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpy-discussion