草庐IT

numpy-ndarray

全部标签

python - 如何找到 numpy 数组中更大的最近值?

我想获取numpy数组中比我的搜索值大的最近值的索引。示例:findNearestAbove(np.array([0.,1.,1.4,2.]),1.5)应返回3(2.的索引)。我知道我可以用np.abs(a-value).argmin()得到最近的索引,我发现min(a[np.where(a-value>=0.)[0]])返回所需的数组值。因此,np.where(a==min(a[np.where(a-value>=0.)[0]]))[0]可能会给我所需的索引。然而,这看起来相当复杂,我担心它在多维数组的情况下可能会崩溃。有什么改进建议吗? 最佳答案

Python 从较大的 2D NumPy 数组创建较小的子数组?

所以我有一个采用以下形式的大型NumPy数组:data=[[2456447.64798471,4,15.717,0.007,5,17.308,0.019,6,13.965,0.006],[2456447.6482855,4,15.768,0.018,5,17.347,0.024,6,14.001,0.023],[2456447.648575,4,15.824,0.02,5,17.383,0.024,6,14.055,0.023]]我想创建一个如下所示的子数组:[[4,15.717,5,17.308,6,13.965],[4,15.768,5,17.347,6,14.001],[4,15

python - 傅里叶变换与 Numpy FFT

这可能是一个非常幼稚的问题,但在这里。我想计算函数f(x)的傅立叶变换。所以我定义了一个numpy数组X并通过向量化函数f。现在,如果我计算这个数组f(X)的FFT,它不会像我在一张纸上做的那样是f(x)的傅立叶变换。例如,如果我计算高斯的FFT,我应该得到一个高斯或一个实部非常类似于高斯的数组。这是代码。请让我知道我必须更改什么才能获得通常的傅里叶变换。importmatplotlib.pyplotaspltimportnumpyasnpN=128x=np.linspace(-5,5,N)y=np.exp(-x**2)y_fft=np.fft.fftshift(np.fft.fft(

python - numpy 数组中的奇怪赋值

我有一个numpy数组A,其中有n行,大小为3。每行由三个整数组成,每个整数都是一个整数,表示numpy数组中的另一个位置。例如,如果我想要N[4]引用的行,我使用N[N[4]]。视觉上:N=np.array([[2,3,6],[12,6,9],[3,10,7],[8,5,6],[3,1,0]...])N[4]=[3,1,0]N[N[4]]=[[8,5,6][12,6,9][2,3,6]]我正在构建一个修改N的函数,我需要为某些指定的x修改N[N[x]],这也是一个参数(示例中为4)。我想将子数组中的所有6更改为另一个数字(假设为0),所以我使用numpy.where来查找索引,它们是

python - 两个 numpy 数组的每对列之间的差异(如何更有效地做到这一点)?

我正在尝试优化一些代码,通过分析我注意到这个特定的循环需要很多时间。你能帮我写得更快吗?importnumpyasnprows_a,rows_v,cols=(10,15,3)a=np.arange(rows_a*cols).reshape(rows_a,cols)v=np.arange(rows_v*cols).reshape(rows_v,cols)c=0foriinrange(len(v)):D=((a-v[i])**2).sum(axis=-1)c+=D.min()print(c)是否有任何numpy函数可以有效地做到这一点? 最佳答案

python - 在 numpy 中从单个 block 创建 block 矩阵的更好方法?

考虑代码M=5;N=3;A11=np.random.rand(M,M);A12=np.random.rand(M,N);A21=np.random.rand(N,M);A22=np.random.rand(N,N);我是numpy的新手,正在学习它。我想按以下方式创建block矩阵RowBlock1=np.concatenate((A11,A12),axis=1)RowBlock2=np.concatenate((A21,A22),axis=1)Block=np.concatenate((RowBlock1,RowBlock2),axis=0)有没有更简单的方法呢?例如:在matlab

python - 如何使用 numpy 将向量填充和/或截断为指定长度?

我有几个列表:a=[1,2,3]b=[1,2,3,4,5,6]长度可变。我想返回一个长度为5的向量,这样如果输入列表长度5,那么它将在第5个元素处被截断.例如输入a会返回np.array([1,2,3,0,0]),输入b将返回np.array([1,2,3,4,5])。我觉得我应该可以使用np.pad,但我似乎无法遵循文档。 最佳答案 这可能会很慢或很快,我不确定,但它适合您的目的。In[22]:pad=lambdaa,i:a[0:i]iflen(a)>ielsea+[0]*(i-len(a))In[23]:pad([1,2,3],

python - 在 Numpy 中将一维数组添加到三维数组

我正在尝试添加两个数组。np.zeros((6,9,20))+np.array([1,2,3,4,5,6,7,8,9])我想得到一些类似的东西array([[[1.,1.,1.,...,1.,1.,1.],[2.,2.,2.,...,2.,2.,2.],[3.,3.,3.,...,3.,3.,3.],...,[7.,7.,7.,...,7.,7.,7.],[8.,8.,8.,...,8.,8.,8.],[9.,9.,9.,...,9.,9.,9.]],[[1.,1.,1.,...,1.,1.,1.],[2.,2.,2.,...,2.,2.,2.],[3.,3.,3.,...,3.,3.

python - 没有迭代的 NumPy 中的累积计数

我有一个这样的数组:a=np.array([0.1,0.2,1.0,1.0,1.0,0.9,0.6,1.0,0.0,1.0])我想要一个1.0的实例的运行计数器,它在遇到0.0时重置,因此结果将是:[0,0,1,2,3,3,3,4,0,1]我最初的想法是使用类似b=np.cumsum(a[a==1.0])的东西,但我不知道如何(1)修改它以重置为零或(2)完全不知道如何构造它,使输出数组与输入数组的形状相同。任何想法如何在没有迭代的情况下做到这一点? 最佳答案 我想你可以做类似的事情defrcount(a):without_rese

python - 在 Python/numpy 中计算基尼系数

我正在计算Ginicoefficient(类似于:Python-GinicoefficientcalculationusingNumpy)但我得到一个奇怪的结果。对于从np.random.rand()采样的均匀分布,基尼系数为0.3,但我预计它会接近0(完全相等)。这里出了什么问题?defG(v):bins=np.linspace(0.,100.,11)total=float(np.sum(v))yvals=[]forbinbins:bin_vals=v[v对于给定的一组数字,上述代码计算每个百分位区间中总分布值的分数。结果:均匀分布应该接近“完全相等”,所以洛伦兹曲线弯曲是关闭的。