【python_numpy的基础】教程文章相关的互联网学习教程文章

python-具有numpy的N * M * M张量的矢量化(部分)逆【代码】

我几乎和一年前的情况一样处于类似的情况:fast way to invert or dot kxnxn matrix 所以我有一个张量的索引为a [n,i,j]的维度为(N,M,M)的张量,我想为N中的每个n求M * M方阵部分的值. 例如,假设我有In [1]: a = np.arange(12)a.shape = (3,2,2)aOut[1]: array([[[ 0, 1],[ 2, 3]],[[ 4, 5],[ 6, 7]],[[ 8, 9],[10, 11]]])然后for循环反转将如下所示:In [2]: inv_a = np.zeros([3,2,2])for m in xrange(0,3):inv_a[m] = np...

python-从一个numpy数组的索引采样的有效方法?【代码】

考虑到每个索引都由该数组内部的数字加权,因此我想从2D Numpy数组的索引中进行采样.我知道的方式是使用numpy.random.choice,但是它不返回索引而是返回数字本身.有什么有效的方法吗? 这是我的代码:import numpy as np A=np.arange(1,10).reshape(3,3) A_flat=A.flatten() d=np.random.choice(A_flat,size=10,p=A_flat/float(np.sum(A_flat))) print d解决方法:您可以执行以下操作:import numpy as npdef wc(weights):cs = np.cum...

python-Numpy规范化代码异常缓慢【代码】

我正在整理一些基本的python代码,这些代码采用了映射到矩阵列表(矩阵代表已分类图像)的标签字典,我只是想从所有内容中减去平均图像,然后将数据居中于0- 1个刻度.由于某种原因,此代码运行缓慢.当仅迭代500张4848图像时,大约需要10秒钟才能运行,这实际上并不能扩展到我正在使用的图像数量.查看cProfile结果后,看起来大部分时间都花在_center函数上. 我觉得我可能在这里没有充分利用numpy,并且想知道是否有比我更有经验的人有一些技巧...

Python-Masked Numpy数组比普通numpy数组慢得多【代码】

我有一个函数来计算numpy数组中所有行对之间的成对相关性.一切正常,但是后来我想起,我经常不得不处理丢失的数据.我使用蒙版数组尝试解决此问题,但它使计算速度大大降低.关于使用屏蔽函数的任何想法.我认为真正的瓶颈将在np.ma.dot函数中.但是我添加了一些配置文件,并很快使用iPython进行了模拟.我应该说,就这些阵列将要拥有的行数而言,5000在频谱的较低端.有些可能超过30万.带掩码数组的代码看起来比没有掩码的代码慢大约20倍,但是...

python-元素的numpy条件格式【代码】

我有一个3D numpy数组,想基于另一个元素的条件测试来更改特定元素. (应用程序是更改RGBA图像阵列的“ alpha”以与3D pyqtgraph图像中的透明度一起使用-理想情况下应该非常快).a= np.ones((2,4,5),dtype=np.int) #create a ones array a[0,0,0] = 3 #change a few values a[0,2,0] = 3 a[1,2,0] = 3 print(a) >>>[[[3 1 1 1 1][1 1 1 1 1][3 1 1 1 1]][[1 1 1 1 1][1 1 1 1 1][3 1 1 1 1]]]现在,我要有条件地测试最小维度(??)的第一...

python-使用线性插值调整numpy ndarray的大小【代码】

假设我想使用线性插值将形状数组(100,100,100)调整为形状数组(57,57,57). 基本上,我需要一个函数,该函数采用形状为S的n维数组,并通过内插将其变换为不带有维数但形状为S’的数组. 是否有一种简单快速的方法来用numpy和scipy做到这一点?我发现了诸如1d插值,2d插值,网格插值之类的东西,但是它们需要线性空间,而我并不是很了解.解决方法:您可以使用scipy.interpolate中的griddata方法from scipy.interpolate import griddata可以说您...

python-如何迭代一个numpy数组并选择相邻的单元格【代码】

我正在将USGS高程栅格数据集转换为Numpy数组,然后尝试随机选择数组中的位置.从这个位置,我想创建一种方法来识别周围的八个单元,以查看这些单元的高度是否在随机选择的单元的一米以内. 在这里它变得更加复杂…如果邻居在一米之内,则将调用相同的方法,然后重复该过程,直到一米以内不再有像元或所选像元的数量达到规定的限制. 如果不清楚,希望下面的2d数组示例更有意义.随机选择粗体/斜体单元格(35),在其上调用该方法(选择其所有八个邻...

python-如何对数组中的numpy数组进行排序?【代码】

这个问题与this one密切相关.可以说可以使用np.lexsort或在np.recarray上排序来解决它,但不能以琐碎和Python的方式解决. 我有一个numpy数组,例如这个数组:array([[[ 2, 7, 1],[ 35, 9, 1],[ 22, 12, 4]],[[ 12, 2, 3],[ 3, 7, 8],[ 12, 1, 10]]])我想把那个作为输出:array([[[ 2, 7, 1],[ 22, 12, 4],[ 35, 9, 1]],[[ 3, 7, 8],[ 12, 1, 10],[ 12, 2, 3]]])也就是说,根据每个内部数组的第一,第二和第三值...

python-浮点数的numpy数组表示形式中的多余空格【代码】

您知道为什么numpy整数数组的表示没有填充:>>> print array([[1, 2], [3, 4]]) [[1 2][3 4]]而浮点数的numpy数组在每个条目之前都有一个额外的空间?>>> print array([[1., 2], [3, 4]]) [[ 1. 2.][ 3. 4.]](至少在Python 2.7中) 我对它背后的原因/想法更感兴趣,而对引起它的具体实现细节更感兴趣.解决方法:我似乎怪罪于找出为什么作者如此实现. 看一下https://github.com/numpy/numpy/blame/master/numpy/core/arrayprint.py的...

python-将1D字节数组转换为2D numpy数组的最快方法【代码】

我有一个可以像这样处理的数组:ba = bytearray(fh.read())[32:] size = int(math.sqrt(len(ba)))我可以判断像素应该是黑色还是白色iswhite = (ba[i]&1)==1如何快速将我的1D字节数组转换为2D numpy数组,其行长大小为(ba [i]& 1)== 1而其他像素为白色像素?我这样创建数组:im_m = np.zeros((size,size,3),dtype="uint8)解决方法: import numpy as np# fh containts the file handle# go to position 32 where the image data start...

python-是否有更快的方法在numpy中进行这种索引编制?【代码】

我有如下的numpy数组a和b.a.shape = (100,10000) b.shape = (100,)需要一个形状为(100,)的c,for i in range(0,len(b)):c[i] = a[i,b[i]]我想要一种更快的方法来完成上述操作.我正在使用的场景不能使用For循环.它可以工作,但仍然很昂贵.有更有效的方法吗?解决方法:是的,您可以这样做:import numpy as npc = a[np.arange(len(b)), b]那差不多快了.在下面的代码中import numpy as npa = np.random.random((1000000, 10)) b = np.ran...

python-使用索引替换2D numpy数组的一部分【代码】

我正在尝试将2D numpy数组的一部分替换为i和j的函数,它们名为“ S”.给定S为:>>> S Out[1]: array([[ 1., 0., 0.],[ 0., 3., 0.],[ 0., 0., 9.]]对于i = 0和j = 1,我可以使用以下语法访问元素第i和j行以及第i和j列:>>> S[:, [i, j]][[i, j], :] Out[2]: array([[ 1., 0.],[ 0., 3.]])现在,当我尝试用另一个尺寸相同的数组(tmp_arr)替换数组S的相同元素时,python不会给出错误,但是它也没有做任何事情,这意味着S的元素保...

Python numpy广播3个维度(多个加权和)【代码】

我已经习惯了使用2维数组进行广播,但是我无法理解我想做的3维事情. 我有两个二维数组:>>> a = np.array([[0.01,.2,.3,.4],[.2,.03,.4,.5],[.9,.8,.7,.06]]) >>> b= np.array([[1,2,3],[3.,4,5]]) >>> a array([[ 0.01, 0.2 , 0.3 , 0.4 ],[ 0.2 , 0.03, 0.4 , 0.5 ],[ 0.9 , 0.8 , 0.7 , 0.06]]) >>> b array([[ 1., 2., 3.],[ 3., 4., 5.]])现在,我想要的是a中所有行的总和,其中每一行都由b中的列值加权.因此,我想要...

Python / Numpy-填补非连续点之间的空白?【代码】

我正在尝试找到一种向量化/快速/ numpy友好的方式,将A列中的以下值转换为B列:ID A B 1 0 0 2 0 0 3 1 0 4 1 1 5 0 1 6 0 1 7 -1 1 8 0 0 9 1 0 10 0 1 11 0 1 12 1 1 13 0 1 14 -1 1 15 0 0定义“ B”列的算法将使用值1填充1和-1组之间的所有间隙,从而跳过每对中的第一行.也就是说,对于ID4-ID7,B列用1填充(假定A列中的起始1 @ ID3).接下来,在ID10-ID14中用1填充(因为列A ...

python-在numpy / pandas中查找特定值之前的最后一个值【代码】

我有一个Pandas Series,我想找到一些值在其他特定值之前最后一次出现的索引/位置(或布尔掩码). 例如.给出:df = pd.DataFrame({'x':np.random.randint(10, 1000000)})我想找到0的所有位置,它们是9之前最后出现的位置.因此,如果我的数组是[9, 0, 3, 0, 1, 9, 4, 9, 0, 0, 9, 4, 0]我只对位置3和9的零感兴趣.请注意,在这种情况下,我不必担心位置12的最后0会发生什么.我宁愿不要将其包含在返回值集中,但并不重要. 我当前的方法是这样的...