Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 二维阵列上的numpy逻辑运算_Python_Arrays_Numpy - Fatal编程技术网

Python 二维阵列上的numpy逻辑运算

Python 二维阵列上的numpy逻辑运算,python,arrays,numpy,Python,Arrays,Numpy,假设我们有一组值:n-行和6列(n,6)。 如果第三个元素大于第四个元素,如何将一行中的第四个元素替换为第三个元素 我试着用这样的方式做 griddata[:,3][griddata[:,2] > griddata[:,3]] = griddata[:,2] TypeError:“numpy.float64”对象不支持项分配 您可以改为使用: 如果条件(griddata[:,2]>griddata[:,3])为真,则使用第三个参数(原始参数):griddata[:,3])替换gridda

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

我试着用这样的方式做

griddata[:,3][griddata[:,2] > griddata[:,3]] = griddata[:,2]
TypeError:“numpy.float64”对象不支持项分配

您可以改为使用:

如果条件(
griddata[:,2]>griddata[:,3]
)为真,则使用第三个参数(原始参数):
griddata[:,3]
)替换
griddata[:,2]

小样本:

>>> 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
元素,其中
x
是针对您的情况的
True
的数量,但是
griddata[:,2]
始终包含
n
元素。因此,在任何情况下(当
griddata[:,2]>griddata[:,3]
对所有行都为True时除外),您将尝试将
n
项放入
x
插槽中。那是行不通的

你需要掩盖两面才能使其发挥作用:

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

优雅朴素。我不知道,这些额外的论点在哪里。太棒了。我认为这实际上是
np的最初目的。在那里
,它非常有用,几乎可以用于所有事情(包括在许多代码中替换
np.non-zero
)。掩蔽两面可能会更快,尤其是当只有少数项目需要覆盖时。
griddata[:,3][griddata[:,2] > griddata[:,3]] = griddata[:,2][griddata[:,2] > griddata[:,3]]
#                                                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^