草庐IT

python - 二维 numpy 数组中的阈值

我有一个形状为512x512的数组,其中第i个和第j个位置包含0到100之间的数字。现在我想在其他地方选择array[i,j]array=array[where(array,这给了我一个一维数组,但我想要二维数组。请帮我解决这个问题。 最佳答案 一个解决方案:result=(array第一部分array为您提供一个相同形状的数组,该数组为1(真),其中值小于25,否则为0(假)。与原始数组的逐元素乘法保留小于25的值并将其余值设置为0。这不会更改原始数组另一种可能性是将原始数组中所有>=25的值设置为零:array[array>=2

python - 检查 numpy 数组是否为二进制的快速方法(仅包含 0 和 1)

给定一个numpy数组,如果它只包含0和1,我如何快速计算出它?有实现方法吗? 最佳答案 一些方法-((a==0)|(a==1)).all()~((a!=0)&(a!=1)).any()np.count_nonzero((a!=0)&(a!=1))==0a.size==np.count_nonzero((a==0)|(a==1))运行时测试-In[313]:a=np.random.randint(0,2,(3000,3000))#Only0sand1sIn[314]:%timeit((a==0)|(a==1)).all()...:%

python - 我怎样才能提高这个numpy循环的效率

我有一个包含标签的numpy数组。我想根据标签的大小和边界框为每个标签计算一个数字。我怎样才能更有效地编写它,以便在大型阵列(~15000个标签)上使用它是现实的?A=array([[1,1,0,3,3],[1,1,0,0,0],[1,0,0,2,2],[1,0,2,2,2]])B=zeros(4)forlabelinrange(1,4):#gettheboundingboxofthelabellabel_points=argwhere(A==label)(y0,x0),(y1,x1)=label_points.min(0),label_points.max(0)+1#assumeI'

python - 如何使用 numpy 将矩阵分成 4 个 block ?

我正在使用python实现Strassen的矩阵乘法。在划分步骤中,我们将一个较大的矩阵划分为较小的子矩阵。是否有内置的numpy函数来拆分矩阵? 最佳答案 根据thisanswer,您可以使用swapaxes:您可以创建一个辅助方法:defsplit(array,nrows,ncols):"""Splitamatrixintosub-matrices."""r,h=array.shapereturn(array.reshape(h//nrows,nrows,-1,ncols).swapaxes(1,2).reshape(-1,nr

python - 如何使用 scipy/numpy 或 sympy 执行非线性优化?

我试图在Python中找到以下方程组的最优解:(x-x1)^2+(y-y1)^2-r1^2=0(x-x2)^2+(y-y2)^2-r2^2=0(x-x3)^2+(y-y3)^2-r3^2=0给定点(x,y)和半径(r)的值:x1,y1,r1=(0,0,0.88)x2,y2,r2=(2,0,1)x3,y3,r3=(0,2,0.75)找到点(x,y)的最优解的最佳方法是什么使用上面的示例它将是:~(1,1) 最佳答案 如果我正确理解你的问题,我认为这就是你想要的:fromscipy.optimizeimportminimizeimpor

python - 使用 NAN 替换强制转换非数字 numpy 数组

考虑数组x=np.array(['1','2','a'])转换为float组会引发异常x.astype(np.float)ValueError:couldnotconvertstringtofloat:anumpy是否提供任何有效的方法将其强制转换为数字数组,用NAN之类的东西替换非数字值?或者,是否有一个有效的numpy函数等同于np.isnan,但它也测试非数字元素,如字母? 最佳答案 您可以使用np.genfromtxt将字符串数组转换为float数组(带有NaN):In[83]:np.set_printoptions(pre

python - numpy 数组的重新排序

我想重新排序我的numpy数组的维度。下面的一段代码有效,但速度太慢。foriinrange(image_size):forjinrange(image_size):forkinrange(3):new_im[k,i,j]=im[i,j,k]在此之后,我将new_im向量化:new_im_vec=new_im.reshape(image_size**2*3)就是说,我不需要new_im,我只需要到达new_im_vec。有一个更好的方法吗?image_size约为256。 最佳答案 查看rollaxis,一个移动轴的函数,允许你在一

python - 为什么 numpy.random.choice 这么慢?

在编写脚本时,我发现了numpy.random.choice函数。我实现它是因为它比等效的if语句干净得多。然而,在运行脚本后我意识到它比if语句慢明显。下面是一个MWE。第一种方法需要0.0秒,而第二种方法需要7.2秒。如果你扩大i循环,你会看到random.choice变慢的速度有多快。谁能评论一下为什么random.choice这么慢?importnumpyasnpimportnumpy.randomasrandimporttimeastm#----------------------------------------------------------------------

python - numpy python 上的反向对角线

假设我有这个:(numpy数组)a=[0123],[4567],[891011]要得到[1,1]即5其对角线为零;根据numpy,a.diagonal(0)=[0,5,10]。如何获得[1,1]的反向或从右到左对角线[2,5,8]?这可能吗?我原来的问题是8x8(0:7)..希望对您有所帮助 最佳答案 每行反转得到一个新数组。>>>importnumpyasnp>>>a=np.array([...[0,1,2,3],...[4,5,6,7],...[8,9,10,11]...])>>>a[:,::-1]array([[3,2,1,0

python - 如何将 numpy.matrix 提升为非整数幂?

numpy.matrix的**运算符不支持非整数幂:>>>mmatrix([[1.,0.],[0.5,0.5]])>>>m**2.5TypeError:exponentmustbeaninteger我想要的是octave:14>[10;.5.5]^2.5ans=1.000000.000000.823220.17678我可以使用numpy或scipy来实现吗?备注:这不是逐元素操作。正如thispost中所述,它是一个矩阵(在线性代数中)的某个幂次。. 最佳答案 你可以使用scipy.linalg.fractional_matrix_