Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.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 3.x 包含if条件的while循环的矢量化_Python 3.x_Numpy - Fatal编程技术网

Python 3.x 包含if条件的while循环的矢量化

Python 3.x 包含if条件的while循环的矢量化,python-3.x,numpy,Python 3.x,Numpy,我想矢量化一个过滤过程,在这个过程中我使用了while循环和if条件。为了解释这一点,我举了一个简单的例子。假设我有一个数学函数:f(x)=-x**2+0.25,我想生成特定数量的点,num\u sample,介于-1和1之间,其中f(x)>0。我使用while循环编写了以下函数,以在点数等于所需数时停止 import numpy as np def f(x): return -(x[:,0]**2+x[:,1]**2)+0.25 def generate_x(num_samp

我想矢量化一个过滤过程,在这个过程中我使用了while循环和if条件。为了解释这一点,我举了一个简单的例子。假设我有一个数学函数:
f(x)=-x**2+0.25
,我想生成特定数量的点,
num\u sample
,介于-1和1之间,其中
f(x)>0
。我使用while循环编写了以下函数,以在点数等于所需数时停止

import numpy as np    
def f(x):
    return -(x[:,0]**2+x[:,1]**2)+0.25

def generate_x(num_sample):
    xy_array = np.empty((num_sample,2))
    x_tmp = np.empty((1,2))
    counter = 0
    while counter < num_sample:
        x_tmp[:,0] = np.random.uniform(low=-1., high=1., size=(1,))
        x_tmp[:,1] = np.random.uniform(low=-1., high=1., size=(1,))
        if f(x_tmp) > 0.:
            xy_array[counter,:] = x_tmp
            counter += 1
            
    return xy_array
将numpy导入为np
def f(x):
返回-(x[:,0]**2+x[:,1]**2)+0.25
def生成_x(num_样本):
xy_数组=np.empty((num_样本,2))
x_tmp=np.空((1,2))
计数器=0
当计数器0:
xy_阵列[计数器,:]=x_tmp
计数器+=1
返回xy_数组

我想知道是否有一种方法可以矢量化
生成\u x
过程。另外,我不想生成大量的点并过滤出给出正f的点。

你想要一个结果为一个值的
np.array
列表吗?@MichaelSzczesny:我需要一个x点列表,所有这些点都给出f(x)>0。对于这个简单的例子,x可以是一个数字或大小为(1,)的np.array,正如x_tmp一样。但是对于我原来的问题,x是一个多维np.array,因此x_list是一个np.array的列表。你想对python
列表的构造进行向量化吗?@MichaelSzczesny:实际上不是。我只是编辑了最简单的代码,以便更接近我的实际需要。通常的numpy方法是做你不想做的事情。问题-你为什么不想这样做?