【python】numpyarray出符合条件的数并赋值
在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)
>>>
[[55070000]
[09806000]
令数组全部的值为0[70660002]
[60847000]
[01000941]
[40000009]
[77904831]
[04040000]]
# 这就将所有⼤于零的保留了下来
#--------------------------------------------------------------#
#还可以此类推,将⼤于零的位置都设置成1,可得到⼤于⼀的位置
b = a.copy()
b[b>0]=1
b[b<=0]=0
print(b)
>>>
[[11010000]
[01101000]
[10110001]
[10111000]
[01000111]
[10000001]
[11101111]
[01010000]]
2.利⽤numpy.where()
# results = np.where(condition, [x, y])
# 当条件为真时,对应位置返回x中的值,条件不成⽴则返回y中的值
c = np.where(a>0,a,0)#满⾜⼤于0的值保留,不满⾜的设为0
print(c)
>>>
[[55070000]
[09806000]
[70660002]
[60847000]
[01000941]
[40000009]
[77904831]
[04040000]]
# ⼤于零为1⼩于零为0
c = np.where(a>0,1,0)#满⾜⼤于0的值保留,不满⾜的设为0
print(c)
[[11010000]
[01101000]
[10110001]
[10111000]
[01000111]
[10000001]
[11101111]
[01010000]]
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)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论