我试图从一个numpy符号数组(即一个numpy数组,其条目是1.
或{
def sign2int(s):
s[s==-1.] = 0.
bstr = ''
for i in range(len(s)):
bstr = bstr + str(int(s[i]))
return int(bstr, 2)
def int2sign(i, m):
bstr = bin(i)[2:].zfill(m)
s = []
for d in bstr:
s.append(float(d))
s = np.array(s)
s[s==0.] = -1.
return s
那么
^{pr2}$我关心的是(1)每个中的for循环和(2)必须构建一个作为字符串的中间表示。在
最终,我也会想要一个能与二维numpy数组一起工作的东西——例如
>>> s = np.array([[1., -1., 1.], [1., 1., 1.]])
>>> print sign2int(s)
[5, 7]
以下是一些函数的矢量化版本:
要在二维数组上使用函数,可以使用
^{pr2}$map
函数:对于1d数组,可以使用这种一种线性数乘方法,使用
np.packbits
:对于倒车:
^{pr2}$对于二维阵列:
对于倒车:
我先从
sig2int
。。从符号表示转换为二进制然后你可以简单地创建一个2的幂的数组,乘以二进制数,然后求和。在
^{pr2}$然后通过添加轴信息并依赖广播使其对行进行操作。在
我在一个4乘100位的数组上尝试过,它看起来很快
如果我能想到的话,我会加上相反的。-我所能做的最好的方法就是使用一些没有任何numpy向量化魔法的纯Python,除了一次迭代并转换一个int之外,我还不知道如何使它与一系列int一起工作,但是时间似乎还是可以接受的。在
1324工程:
似乎适用于1.2e305:
相关问题 更多 >
编程相关推荐