[英]setting values of np.array based on the values of another np.array python
我有一个numpy数组A,其中包含0到1之间的值。我想创建另一个numpy数组y,以便如果A(i)> = 0.5且y(i)=,则y(i)= 1的值。如果A(i)<0.5,则为0。 我使用了以下python代码:
f=lambda v: 1 if v>0.5 else 0
vf=np.vectorize(f)
Y=vf(A)
有没有办法在一行命令而不是三行命令中执行此功能?
使用向量化比较并将结果强制转换为int:
(A >= 0.5).astype(int)
A >= 0.5
会生成一个数组,其中元素>= 0.5
比较结果,并且astype(int)
将True
转换为1
,将False
为0
。
如果可以使用单字节整数
(A >= 0.5).view(np.int8)
快一点。 与astype
view
不同,它不会创建新数据。 它重新解释其操作数的数据缓冲区
import numpy
A = numpy.random.rand(10)
print(A)
数组A :
[ 0.76702953 0.89697124 0.54573644 0.48079479 0.39556016 0.50646642
0.45998033 0.11159339 0.69824144 0.37451713]
创建另一个numpy数组y
,如果A(i) >= 0.5
则y(i) = 1
,如果A(i) < 0.5
则y(i) = 0
。
Y = (A >= 0.5).astype(int)
print(Y)
数组Y :
[1 1 1 0 0 1 0 0 1 0]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.