二维数组上的numpy逻辑运算

我开车

假设我们有一组值:-n行和6列(n,6)。如果第3个元素大于第4个元素,如何将第4个元素替换为等于第3个元素?

我试图以这种方式做到这一点:

griddata[:,3][griddata[:,2] > griddata[:,3]] = griddata[:,2]

TypeError:'numpy.float64'对象不支持项目分配

塞弗特

您可以np.where改用:

griddata[:,3] = np.where(griddata[:,2] > griddata[:,3], griddata[:,2], griddata[:,3])

替换griddata[:,3]griddata[:,2]无处不在的条件(griddata[:,2] > griddata[:,3])是真,否则与第三个参数(原)griddata[:,3]

一个小样本:

>>> griddata = np.array([[1,2,3,4,5,6], [6,5,4,3,2,1]])
>>> griddata
array([[1, 2, 3, 4, 5, 6],
       [6, 5, 4, 3, 2, 1]])

>>> griddata[:,3] = np.where([griddata[:,2] > griddata[:,3]], griddata[:,2], 
>>> griddata
array([[1, 2, 3, 4, 5, 6],
       [6, 5, 4, 4, 2, 1]])

为什么您的方法行不通:

griddata[:,3][griddata[:,2] > griddata[:,3]]包含x元素,其中xTrue您的条件的数量,但是griddata[:,2]始终包含n元素。因此,在任何情况下(除非griddata[:,2] > griddata[:,3]所有行均为True),您都将尝试将n项目放入x插槽。那根本行不通。

您需要遮盖两面以使其起作用:

griddata[:,3][griddata[:,2] > griddata[:,3]] = griddata[:,2][griddata[:,2] > griddata[:,3]]
#                                                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

numpy的二维数组最大/最大

来自分类Dev

如何更新二维numpy数组?

来自分类Dev

如何生成二维numpy数组?

来自分类Dev

二维numpy数组中的阈值

来自分类Dev

二维数组的numpy列表乘法

来自分类Dev

numpy的二维数组组合

来自分类Dev

numpy:二维数组矩阵的大小?

来自分类Dev

二维数组的Numpy Delete

来自分类Dev

底图和numpy二维数组

来自分类Dev

访问二维numpy数组

来自分类Dev

numpy在哪里二维数组

来自分类Dev

Numpy迭代二维对象数组

来自分类Dev

二维数组的 Numpy 梯度

来自分类Dev

无法修改 numpy 二维数组

来自分类Dev

用逻辑运算符索引numpy数组

来自分类Dev

用逻辑运算符索引numpy数组

来自分类Dev

Numpy在二维矩阵上的where()

来自分类Dev

Numpy在二维矩阵上的where()

来自分类Dev

函数数组上的逻辑运算符

来自分类Dev

将二维numpy数组放入3维数组

来自分类Dev

二维数组上的memcpy

来自分类Dev

为什么在二维数组上执行此指针运算?

来自分类Dev

二维Numpy数组到Numpy数组列表

来自分类Dev

对二维numpy数组进行条件数学运算,对一维进行检查,对差异维进行不同的运算

来自分类Dev

二维Numpy数组在组上最快的应用功能

来自分类Dev

np.vectorize 在作为输入的二维 numpy 数组上失败

来自分类Dev

如何从numpy二维数组中提取子数组?

来自分类Dev

通过索引二维数组来填充numpy数组

来自分类Dev

numpy中的列级逻辑运算