Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/309.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_Numpy - Fatal编程技术网

Python 如果numpy中的某些行根据自指定函数更好,如何替换它们?

Python 如果numpy中的某些行根据自指定函数更好,如何替换它们?,python,numpy,Python,Numpy,我有一个矩阵x和一个矩阵p,它们的结构和大小相同。 一行表示n维点的坐标。 我有一个函数f,它取一个点(可以说是一行)并计算它的分数 给定x和p,如果x中的I行小于p中的I行,根据我的函数f,我想用x中的I行替换p中的I行,形式上: 对于所有行索引,我执行以下操作: p[i]=(x[i]如果f(x[i])

我有一个矩阵x和一个矩阵p,它们的结构和大小相同。 一行表示n维点的坐标。 我有一个函数f,它取一个点(可以说是一行)并计算它的分数

给定x和p,如果x中的I行小于p中的I行,根据我的函数f,我想用x中的I行替换p中的I行,形式上:

对于所有行索引,我执行以下操作: p[i]=(x[i]如果f(x[i]) Python的列表理解速度太慢了,所以我需要在numpy中完成它,但我对numpy是新手,在尝试理解它的过程中付出了巨大的努力,但失败了。 根据我已经做过的其他计算,出于某种原因,我把它们称为基准,x和p的向量,其中索引I处的值是第I行的分数

以下是相关代码:

benchmark_x = FUNCTION(x)
benchmark_p = FUNCTION(p)

# TODO Too slow, ask smart guys from StackOverflow
p = np.array([x[i] if benchmark_x[i] < benchmark_p[i] else p[i] for i in range(p.shape[0])])
benchmark_x=函数(x)
基准p=函数(p)
#TODO太慢了,问问StackOverflow的聪明人
p=np.array([x[i]如果benchmark_x[i]
这个怎么样

pos = benchmark_x < benchmark_p
p[pos] = x[pos]
pos=benchmark\ux
这个怎么样

pos = benchmark_x < benchmark_p
p[pos] = x[pos]
pos=benchmark\ux
它工作得又快又好!!这是我的第一个问题,我如何选择最有用的答案和内容?@Tobs40我很乐意。您可以通过单击复选标记将答案标记为最有用✔️ 让我来回答这个问题它工作得又快又好!!这是我的第一个问题,我如何选择最有用的答案和内容?@Tobs40我很乐意。您可以通过单击复选标记将答案标记为最有用✔️ 留待回答