numpyarray找出符合条件的数并赋值的示例代码
短信预约 -IT技能 免费直播动态提醒
在python中利用numpy array进行数据处理,经常需要找出符合某些要求的数据位置,有时候还需要对这些位置重新赋值。这里总结了几种找出符合条件数据位置的方法。
这里以一个8*8的随机数组举例,来找出大于零的数。
import numpy as np
a = random.randint(-10,10,size=(8,8))
>>>
array([[ 5, 5, -7, 7, -8, -7, 0, -8],
[ -4, 9, 8, -3, 6, -4, -7, -5],
[ 7, 0, 6, 6, -4, -2, -8, 2],
[ 6, -5, 8, 4, 7, -8, -4, -4],
[ 0, 1, -1, -8, -1, 9, 4, 1],
[ 4, -8, -1, -8, -2, -6, -1, 9],
[ 7, 7, 9, -9, 4, 8, 3, 1],
[ -8, 4, -2, 4, -1, -4, -10, 0]])
1.直接利用条件索引
location= a[a>0]
print(location)
>>> array([5, 5, 7, 9, 8, 6, 7, 6, 6, 2, 6, 8, 4, 7, 1, 9, 4, 1, 4, 9, 7, 7, 9,
4, 8, 3, 1, 4, 4])
# 直接输出了大于0的数字
#--------------------------------------------------------------#
# 我们可以用下面的方法将小于0的数字都设置为零,留下大于零的数字
b = a.copy()
b[b<=0]=0
print(b)
>>>
[[5 5 0 7 0 0 0 0]
[0 9 8 0 6 0 0 0]
[7 0 6 6 0 0 0 2]
[6 0 8 4 7 0 0 0]
[0 1 0 0 0 9 4 1]
[4 0 0 0 0 0 0 9]
[7 7 9 0 4 8 3 1]
[0 4 0 4 0 0 0 0]]
# 这就将所有大于零的保留了下来
#--------------------------------------------------------------#
#还可以此类推,将大于零的位置都设置成1,可得到大于一的位置
b = a.copy()
b[b>0] = 1
b[b<=0] = 0
print(b)
>>>
[[1 1 0 1 0 0 0 0]
[0 1 1 0 1 0 0 0]
[1 0 1 1 0 0 0 1]
[1 0 1 1 1 0 0 0]
[0 1 0 0 0 1 1 1]
[1 0 0 0 0 0 0 1]
[1 1 1 0 1 1 1 1]
[0 1 0 1 0 0 0 0]]
2.利用numpy.where()
# results = np.where(condition, [x, y])
# 当条件为真时,对应位置返回x中的值,条件不成立则返回y中的值
c = np.where(a>0,a,0) #满足大于0的值保留,不满足的设为0
print(c)
>>>
[[5 5 0 7 0 0 0 0]
[0 9 8 0 6 0 0 0]
[7 0 6 6 0 0 0 2]
[6 0 8 4 7 0 0 0]
[0 1 0 0 0 9 4 1]
[4 0 0 0 0 0 0 9]
[7 7 9 0 4 8 3 1]
[0 4 0 4 0 0 0 0]]
# 大于零为1小于零为0
c = np.where(a>0,1,0) #满足大于0的值保留,不满足的设为0
print(c)
[[1 1 0 1 0 0 0 0]
[0 1 1 0 1 0 0 0]
[1 0 1 1 0 0 0 1]
[1 0 1 1 1 0 0 0]
[0 1 0 0 0 1 1 1]
[1 0 0 0 0 0 0 1]
[1 1 1 0 1 1 1 1]
[0 1 0 1 0 0 0 0]]
3.直接逻辑运算
a > 0 # 得到判断矩阵
array([[ True, True, False, True, False, False, False, False],
[False, True, True, False, True, False, False, False],
[ True, False, True, True, False, False, False, True],
[ True, False, True, True, True, False, False, False],
[False, True, False, False, False, True, True, True],
[ True, False, False, False, False, False, False, True],
[ True, True, True, False, True, True, True, True],
[False, True, False, True, False, False, False, False]], dtype=bool)
到此这篇关于numpy array找出符合条件的数并赋值的示例代码的文章就介绍到这了,更多相关numpy array赋值内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341