作者:张心虚要加油 | 来源:互联网 | 2022-12-01 19:40
我有一大堆数字:
n = [ 1.2,0,-0.5,0.3,0,-0.8]
我想创建一个numpy数组使用上面只保存数字的符号,结果应该是:
s = [1,0,-1,1,0,-1]
我可以用循环创建它:
s= np.zeros(n.shape[0])
for i in range (n.shape[0]):
if n[i]>0: s[i]=1
if n[i]<0: s[i]=-1
有没有办法使用列表理解与numpy数组,可以做同样的高性能?
1> hesham_EE..:
如果你使用numpy,更好的解决方案是使用numpy.sign():
import numpy as np
s = np.sign(n)
这会给你一个numpy数组.
数组([1.,0.,-1.,1.,0.,-1.])
要将此浮点结果转换为int,您可以使用:
s.astype(np.int)
如果要将其转换回python列表:
s_list = s.tolist()
您可以在一行中执行以上操作:
s = np.sign(n).astype(np.int).tolist()