草庐IT

python - numpy 中没有临时项的外积的非平凡总和

我想解决的实际问题是,给定一组N单位向量和另一组M向量,计算每个单位向量的平均值它与每个M向量的点积的绝对值。本质上,这是计算两个矩阵的外积,然后求和并取中间的绝对值取平均值。对于N和M不是太大,这并不难,有很多方法可以继续(见下文)。问题是当N和M很大时,创建的临时文件很大,并为所提供的方法提供了实际限制。可以在不创建临时对象的情况下完成此计算吗?我遇到的主要困难是由于绝对值的存在。是否存在用于“线程化”此类计算的通用技术?例如考虑以下代码N=7M=5#Createtheunitvectors,justsowehavesomeexamples,#thisisnotmeanttobee

python - 在 numpy 中更有效地矢量化此卷积类型循环

我必须执行以下类型的许多循环foriinrange(len(a)):forjinrange(i+1):c[i]+=a[j]*b[i-j]其中a和b是短数组(大小相同,大约在10到50之间)。这可以使用卷积有效地完成:importnumpyasnpnp.convolve(a,b)但是,这给了我完整的卷积(即,与上面的for循环相比,向量太长了)。如果我在卷积中使用“相同”选项,我会得到中心部分,但我想要的是第一部分。当然,我可以从完整向量中去掉不需要的部分,但如果可能的话,我想去掉不必要的计算时间。有人可以建议更好的循环矢量化吗? 最佳答案

python - 在 matplotlib 中为 3d 箭袋图添加颜色

我想要在我的3d箭袋图中使用与颜色图相对应的颜色。绘图的二维版本有一个可选数组,用于将颜色映射到箭头。如何在3d版本中创建相同的效果? 最佳答案 3D箭袋图是1.4中的一项全新功能,它(及其文档)的边缘可能仍然有点粗糙。在这种情况下,我们可以尝试使用quiver被实现为LineCollection的事实,它(最终)继承自ScalarMappable这意味着它知道颜色映射是什么并且返回艺术家有方法set_array。基于文档herefrommpl_toolkits.mplot3dimportaxes3dimportmatplotlib

Python- np.mean() 给出错误的方法?

问题所以我有50个netCDF4数据文件,其中包含全局网格上数十年的每月温度预测。我正在使用np.mean()对所有50个数据文件进行整体平均,同时保留时间长度和空间比例,但np.mean()给了我两个不同的答案。我第一次运行它的代码块时,它给了我一个数字,当对纬度和经度进行平均并针对各个运行绘制时,它略低于合奏的平均值。如果我重新运行该block,它会给我一个看起来正确的不同均值。代码我不能在这里复制每一行,因为它很长,但这是我每次运行时所做的。#Historical(1950-2020)datancin_1=Dataset("/project/wca/AR5/CanESM2/mon

python - 对连续的非连续切片进行 Numpy 缩减

假设我有两个numpy数组,形状为(d,f)的A和形状为(d,)的I包含0..n中的索引,例如I=np.array([0,0,1,0,2,1])A=np.arange(12).reshape(6,2)我正在寻找一种快速减少所有切片的方法,特别是sum、mean和max,A[我==我,:];一个慢版本将是results=np.zeros((I.max()+1,A.shape[1]))foriinnp.unique(I):results[i,:]=np.mean(A[I==i,:],axis=0)在这种情况下给出results=[[2.66666667,3.66666667],[7.,8.

python - Python 中的分位数/中位数/2D 装箱

你知道以下问题的快速/优雅的Python/Scipy/Numpy解决方案吗:您有一组x、y坐标和关联值w(所有一维数组)。现在将x和y分箱到二维网格(大小为BINSxBINS)并计算每个分箱的w值的分位数(如中位数),这最终会产生具有所需分位数的BINSxBINS二维数组。使用一些嵌套循环很容易做到这一点,但我确信有更优雅的解决方案。谢谢,标记 最佳答案 这是我想出来的,我希望它有用。它不一定比使用循环更干净或更好,但也许它会让您开始朝着更好的方向发展。importnumpyasnpbins_x,bins_y=1.,1.x=np.a

python - numpy np.array 与 np.matrix(性能)

在使用numpy时,我经常发现这种区别很烦人-当我从矩阵中提取一个向量或一行,然后使用np.array执行操作时,通常会出现问题。为了减少麻烦,为了简单起见,我有时只使用np.matrix(将所有np.arrays转换为np.matrix)。但是,我怀疑会有一些性能影响。任何人都可以评论这些可能是什么以及原因吗?看起来如果它们都只是引擎盖下的数组,那么元素访问只是一个获取值的偏移量计算,所以如果不通读整个源代码我不确定可能有什么区别。更具体地说,这对性能有什么影响:v=np.matrix([1,2,3,4])#versusthebeloww=np.array([1,2,3,4])谢谢

python - 为什么 "None"与 "np.newaxis"具有相同的效果?

这个问题在这里已经有了答案:Numpy:ShouldIusenewaxisorNone?(1个回答)关闭9年前。为什么None有np.newaxis的保存效果?例如,使用:np.arange(10)[:,None]或:np.arange(10)[:,np.newaxis]两者都创造:array([[0],[1],[2],[3],[4],[5],[6],[7],[8],[9]])有谁知道np.newaxis==None的原因吗?

小数选项大于 2 的 python np.round()

Python有默认的round()函数,但我用cython编程,想用numpy函数替换pythonic代码。但是,在终端中进行实验时,我得到了以下结果。>>>np.around(1.23456789)1.0>>>np.around(1.23456789,decimals=0)1.0>>>np.around(1.23456789,decimals=1)1.2>>>np.around(1.23456789,decimals=2)1.23>>>np.around(1.23456789,decimals=3)1.2350000000000001>>>np.around(1.23456789,d

python - 为什么 round(x) 和 round(np.float64(x)) 有区别?

据我了解,2.675和numpy.float64(2.675)都是相同的数字。然而,round(2.675,2)给出2.67,而round(np.float64(2.675),2)给出2.68。为什么会这样?importnumpyasnpfromdecimalimportDecimalx=2.675np_x=np.float64(x)type(x)#floatDecimal(x)#Decimal('2.67499999999999982236431605997495353221893310546875')Decimal(np_x)#Decimal('2.6749999999999998