草庐IT

numpy-ndarray

全部标签

python - 根据索引屏蔽 numpy 数组

如何根据实际索引值屏蔽数组?也就是说,如果我有一个10x10x30矩阵,并且我想在第一个和第二个索引彼此相等时屏蔽该数组。例如,[1,1,:]应该被屏蔽,因为1和1彼此相等,但[1,2,:]不应该,因为它们这样做不是。我只在三维方面问这个问题,因为它类似于我当前的问题并且可能会使事情复杂化。但我的主要问题是,如何根据索引值屏蔽数组? 最佳答案 一般来说,要访问索引的值,您可以使用np.meshgrid:i,j,k=np.meshgrid(*map(np.arange,m.shape),indexing='ij')m.mask=(i=

python - numpy 数组整数索引多于一维

我很确定我遗漏了一些整数索引,需要一些帮助。假设我创建了一个二维数组:>>>importnumpyasnp>>>x=np.array(range(24)).reshape((4,6))>>>xarray([[0,1,2,3,4,5],[6,7,8,9,10,11],[12,13,14,15,16,17],[18,19,20,21,22,23]])然后我可以选择第1行和第2行:>>>x[[1,2],:]array([[6,7,8,9,10,11],[12,13,14,15,16,17]])或者第2行和第3行的第1列:>>>x[[1,2],1]array([7,13])所以我可以选择第1行

python - NaNs 在 Numpy 中比较相等

考虑以下脚本:importnumpyasnpa=np.array([np.nan],dtype=float)b=np.array([np.nan],dtype=float)printa==ba=np.array([np.nan],dtype=object)b=np.array([np.nan],dtype=object)printa==b在我的机器上打印出来[False][True]第一种情况很清楚(asperIEEE-754),但第二种情况是怎么回事呢?为什么两个NaN比较相等?Python2.7.3,Darwin上的Numpy1.6.1。 最佳答案

python - 与 astype(int) 相比,numpy around/rint 慢

所以如果我有类似x=np.random.rand(60000)*400-200的东西.iPython的%timeit说:x.astype(int)耗时0.14毫秒np.rint(x)和np.around(x)耗时1.01毫秒请注意,在rint中和around情况下你仍然需要花费额外的0.14ms来做最后的astype(int)(假设这是您最终想要的)。问题:我认为大多数现代硬件能够同时执行这两项操作是否正确?如果是这样,为什么numpy的舍入时间要长8倍?碰巧我对算术的准确性不是很挑剔,但我看不出如何利用numpy来利用它(我正在研究困惑的生物学而不是粒子物理学)。

Python 和 Numpy nan 和 set

我遇到了Python的Numpy、set和NaN(非数字)的意外行为:>>>set([np.float64('nan'),np.float64('nan')])set([nan,nan])>>>set([np.float32('nan'),np.float32('nan')])set([nan,nan])>>>set([np.float('nan'),np.float('nan')])set([nan,nan])>>>set([np.nan,np.nan])set([nan])>>>set([float('nan'),float('nan')])set([nan,nan])此处np.n

python - NumPy 数据类型比较

我正在尝试比较两个不同数组的数据类型,以选择一个适合组合两者的数据类型。我很高兴地发现我可以执行比较操作,但在此过程中发现了以下奇怪的行为:In[1]:numpy.int16>numpy.float32Out[1]:TrueIn[2]:numpy.dtype('int16')>numpy.dtype('float32')Out[2]:False谁能解释一下这是怎么回事?这是NumPy1.8.2。 最佳答案 第一个比较没有意义,第二个有意义。与numpy.int16>numpy.float32我们正在比较两个type对象:>>>typ

python - 为什么 numpy 不能计算长对象?

假设我有一个变量,它的类型是“long”x=40*2*10**30如果我随后尝试使用numpy(导入为np)获取此变量的日志:np.log10(x)我遇到了一个属性错误:'long'objecthasnoattribute'log10'.为了解决这个问题,我可以将变量设置为float,它工作得很好,或者使用“数学”包:math.log10(x)np.log10(float(x))我的问题是:math.log10和np.log10有何不同,为什么np没有设置为处理“长”类型? 最佳答案 问题在于numpy是用C编写的,它没有可以处理与

python - 如何使用 numpy 种子创建确定性随机数生成器?

据我了解语法是In[88]:np.random.seed(seed=0)In[89]:np.random.rand(5)但是,当我运行rand()时,我得到了不同的结果。种子功能是否缺少某些内容? 最佳答案 想想发电机:defgen(start):whileTrue:start+=1yieldstart这将不断地从您插入的数字中给出下一个数字给生成器。对于种子,它几乎是相同的概念。我尝试设置一个变量,从中生成数据,其中的位置仍然保存。让我们将其付诸实践:>>>generator=gen(5)>>>generator.next()6>

python - numpy中Gauss-Legendre正交的不同间隔

我们如何使用NumPy包numpy.polynomial.legendre.leggauss在[-1,1]以外的时间间隔内?下面的例子比较了scipy.integrate.quad在[-1,1]区间内的Gauss-Legendre方法。importnumpyasnpfromscipyimportintegrate#Definefunctionandintervala=-1.b=1.f=lambdax:np.cos(x)#Gauss-Legendre(defaultintervalis[-1,1])deg=6x,w=np.polynomial.legendre.leggauss(deg)

python - 生成具有随机长度 block 的 1d numpy

我需要生成一维数组,其中重复的整数序列由随机数的零分隔。到目前为止,我正在为此使用下一个代码:fromrandomimportnormalvariateregular_sequence=np.array([1,2,3,4,5],dtype=np.int)n_iter=10lag_mean=10#meanlengthofzerossequencelag_sd=1#standarddeviationofzerossequencelength#Sequenceoflagslengthslag_seq=[int(round(normalvariate(lag_mean,lag_sd)))for