草庐IT

pagerank_numpy

全部标签

python - Numpy 逐元素点积

是否有一种优雅的、numpy的方式来按元素应用点积?或者如何将下面的代码翻译成更好的版本?m0#shape(5,3,2,2)m1#shape(5,2,2)r=np.empty((5,3,2,2))foriinrange(5):forjinrange(3):r[i,j]=np.dot(m0[i,j],m1[i])提前致谢! 最佳答案 方法#1使用np.einsum-np.einsum('ijkl,ilm->ijkm',m0,m1)涉及的步骤:保持输入的第一个轴对齐。在求和减少中,将m0中的最后一个轴与m1中的第二个轴相比较。让m0和m

python - 从 numpy 数组列表构建 Pandas 数据框

我想知道是否有一种简单的方法可以完成从numpy数组列表生成pandasDataFrame的明显任务,其中列是数组。默认行为似乎让数组成为行,我完全不明白为什么。这是一个简单的例子:names=['data1','data2','data3']data=[np.arange(10)for_innames]df=pd.DataFrame(data=data,columns=names)这会出错,表明pandas需要10列。如果我这样做df=pd.DataFrame(data=data)我得到一个包含10列和3行的DataFrame。鉴于将行追加到DataFrame中通常比将列追加困难得多

python - Numpy diff 反转操作?

使用numpy.diff函数,假设这个简单的例子:>>>x=np.array([1,2,4,7,0])>>>x_diff=np.diff(x)array([1,2,3,-7])我怎样才能轻松地将x恢复到原来的比例?我想numpy.cumsum()有问题. 最佳答案 与第一个元素连接,然后使用cumsum-np.r_[x[0],x_diff].cumsum()为了连接,我们也可以使用np.hstack,就像这样-np.hstack((x[0],x_diff)).cumsum()或使用np.concatenate进行连接-np.conc

python - 如何获得 'numpy.array' 的边界?

如果我有一个d维np.array,我怎样才能得到边界的指标?例如,在2d中,test=np.arange(16).reshape((4,4))testarray([[0,1,2,3],[4,5,6,7],[8,9,10,11],[12,13,14,15]])现在我想得到边界array([[True,True,True,True],[True,False,False,True],[True,False,False,True],[True,True,True,True]])如果高效并且适用于任意数量的维度,那就太棒了,但它必须至少工作3。数组不一定是超立方体,但可能是超矩形:所有维度中的网

python - 为什么 tensorflow 中的随机数生成器 tf.random_uniform 比 numpy 等效项快得多

下面的代码是我用来测试性能的:importtimeimportnumpyasnpimporttensorflowastft=time.time()foriinrange(400):a=np.random.uniform(0,1,(1000,2000))print("np.random.uniform:{}seconds".format(time.time()-t))t=time.time()foriinrange(400):a=np.random.random((1000,2000))print("np.random.random:{}seconds".format(time.time

python - 从字典创建 NumPy 数组的最佳方法?

我刚开始使用NumPy,所以我可能会遗漏一些核心概念......从值为列表的字典创建NumPy数组的最佳方法是什么?像这样:d={1:[10,20,30],2:[50,60],3:[100,200,300,400,500]}应该变成类似这样的东西:data=[[10,20,30,?,?],[50,60,?,?,?],[100,200,300,400,500]]我要对每一行做一些基本的统计,例如:deviations=numpy.std(data,axis=1)问题:从字典创建numpy.array的最好/最有效的方法是什么?字典很大;几百万个key,每个key大约有20个项目。每个“行

python - 遍历numpy中的任意维度

我有一个多维numpy数组,我需要遍历给定的维度。问题是,直到运行时我才知道哪个维度。换句话说,给定一个数组m,我可能想要m[:,:,:,i]foriinxrange(n)或者我想要m[:,:,i,:]foriinxrange(n)等等我想numpy中一定有一个简单的功能来编写这个,但我不知道它是什么/它可能被称为什么。有什么想法吗? 最佳答案 有很多方法可以做到这一点。您可以使用切片列表构建正确的索引,或者改变m的步幅。但是,最简单的方法可能是使用np.swapaxes:importnumpyasnpm=np.arange(24)

python - 如何加速 python 中的 numpy 数组填充?

我正在尝试使用以下代码填充预分配的字节数组:#preallocateablockarraydt=numpy.dtype('u8')in_memory_blocks=numpy.zeros(_AVAIL_IN_MEMORY_BLOCKS,dt)...#writealltheblocksout,flushingonlyasdesiredblocks_per_flush_xrange=xrange(0,blocks_per_flush)for_inxrange(0,num_flushes):forblock_indexinblocks_per_flush_xrange:in_memory_b

python - 使用类似形状的函数获取一维 numpy.array 的 "1"

在一个函数中,我给出了一个Numpy数组:它可以是多维的,也可以是一维的所以当我给出一个多维数组时:np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12]]).shape>>>(3,4)和np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12]]).shape[1]>>>4很好。但是当我问的形状np.array([1,2,3,4]).shape>>>(4,)和np.array([1,2,3,4]).shape[1]>>>IndexError:tupleindexoutofrange糟糕,元组只包含一个元素...而我想要1来指示它

python - 如何对 numpy 数组进行切片以获取第一行和最后两行

据我所知,它没有包含在indexing,slicinganditerating中scipy教程,所以让我在这里问:说我有x=np.array([[1,2],[3,4],[5,6],[7,8],[9,0]])x:array([[1,2],[3,4],[5,6],[7,8],[9,0]])如何对数组进行切片以获取第一行和最后一行:y:array([[1,2],[3,4],[7,8],[9,0]]) 最佳答案 我不知道是否有巧妙的方法可以做到这一点。当然,您可以明确列出索引:>>>x[[0,1,-2,-1]]array([[1,2],[3