如何用反向二进制表示重新索引一个numpy数组?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何用反向二进制表示重新索引一个numpy数组?相关的知识,希望对你有一定的参考价值。
如何改进以下代码?
1)->传递长度为2**n
]的一维数组
2)->为数组的每个索引获取二进制表示形式
3)->反转二进制表示形式,并将其用作对应值的新整数索引
示例:
[[56,209,81,42]
[[00,01,10,11](索引的二进制表示)
->反向:[00,10,01,11]
->成为:[56,81,209,42]
代码:
def order_in_reversed_bits(data: np.ndarray) -> np.ndarray: tobinary = lambda t: np.binary_repr(t, width=len(np.binary_repr(data.shape[0]-1)))[::-1] func = np.vectorize(tobinary) a = func(np.arange(0,data.shape[0])) t = np.zeros(data.shape,dtype='float64') for i,k in enumerate(a): t[int(k,2)] = data[i] return t
Numpy或Python的哪些内置功能很方便?
如何改进以下代码? 1)->通过一个长度为2 ** n的一维数组2)->为数组的每个索引获取二进制表示形式3)->反转二进制表示形式并使用它...
答案
您可以将sorted
与自定义键一起使用,例如:
另一答案
此问题称为bit-reversal permutation。唯一困难的部分是反转索引的二进制表示。 Here,您将找到解决方法。我选择最简单的一个:
以上是关于如何用反向二进制表示重新索引一个numpy数组?的主要内容,如果未能解决你的问题,请参考以下文章