您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

python – numpy多维数组的条件运算

5b51 2022/1/14 8:20:54 python 字数 2507 阅读 492 来源 www.jb51.cc/python

我是一个天真的numpy用户,需要你的帮助以解决以下问题:我想用第三个数组替换多维数组的一些元素,这些元素少于第二个数组;例如.:x = np.arange(16).reshape((2, 8)) # x = np.array([[ 0, 1, 2, 3, 4, 5, 6, 7], # [ 8, 9, 10, 1

概述

我是一个天真的numpy用户,需要你的帮助以解决以下问题:我想用第三个数组替换多维数组的一些元素,这些元素少于第二个数组;例如.:

x = np.arange(16).reshape((2,8)) 
# x = np.array([[ 0,1,2,3,4,5,6,7],#               [ 8,9,10,11,12,13,14,15]])

y = np.array([[2],[13]])
# y = np.array([[ 2],[13]])

现在,找出x??大于y的位置,以及x中是否存在至少一个True> y数组,计算这些实例,创建另一个数组(z)并用z替换这些元素中的x:

x > y 
# = [[False,False,True,True],#    [False,True]]

在这种情况下,应该替换x(x [:,3:])的5个元素,因此我们创建一个(5,2)数组:

z = np.array([[20,21],[22,23],[24,25],[26,27],[28,29]])

我想要的结果是

x == np.array([[ 0,20,22,24,26,28],[ 8,21,23,25,27,29]])

x = np.arange(16).reshape((2,8))
y = np.array([[2],[13]])
z = np.arange(16,32).reshape((2,8))
numpy.where(~(x > y).any(axis=0),x,z)

结果:

array([[ 0,19,28,29,30,31]])

你要求的唯一区别是z必须可以播放到与x相同的形状.除非你绝对需要使用的z值与?(x> y).any(axis = 0)中的True值一样多,我认为这是最好的方法.

但是,根据您的评论,您似乎确实需要使用如上所述的z值.听起来这个函数可以保证形状匹配,所以你可以这样做:

x[:,(x > y).any(axis=0)] = z.T

测试:

>>> z = np.arange(20,30).reshape((5,2))
>>> x[:,(x > y).any(axis=0)] = z.T
>>> x
array([[ 0,29]])

总结

以上是编程之家为你收集整理的python – numpy多维数组的条件运算全部内容,希望文章能够帮你解决python – numpy多维数组的条件运算所遇到的程序开发问题。


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶