草庐IT

Vectorize

全部标签

python - numpy.vectorize 返回不正确的值

我在使用numpy.vectorize函数时遇到一些问题。我定义了一个适用于单元素输入的函数,但矢量化版本返回不同的结果-我做错了什么?代码:defc_inf_comp(z):ifz>0:returnnp.exp(-1./(z*z))else:return0>>>x=np.array([-10.,10.])>>>xarray([-10.,10.])>>>c_inf_comp(x[0])0>>>c_inf_comp(x[1])0.99004983374916811>>>vfunz=np.vectorize(c_inf_comp)>>>vfunz(x)array([0,0])

python - 使用 numpy vectorize 时如何避免大量额外的内存消耗?

下面这段代码最能说明我的问题:控制台的输出(注意,即使是第一次测试也需要大约8分钟才能运行)显示512x512x512x16位数组分配的消耗不超过预期(每个256MByte),并且通常查看“顶部”过程正如预期的那样,仍然低于600MByte。然而,当函数的矢量化版本被调用时,进程会扩展到巨大的大小(超过7GByte!)。即使是我能想到的最明显的解释——vectorize在内部将输入和输出转换为float64——也只能解释几个GB,即使vectorized函数返回一个int16,并且返回的数组肯定是一个int16。有没有办法避免这种情况发生?我使用/理解vectorize的otypes参

python - Pandas 的性能应用 vs np.vectorize 从现有列创建新列

我正在使用Pandas数据框并希望创建一个新列作为现有列的函数。没看到关于df.apply()速度差异的好讨论和np.vectorize(),所以我想我会在这里问。Pandasapply()功能很慢。从我测量到的(在下面的一些实验中显示),使用np.vectorize()比使用DataFrame函数快25倍(或更多)apply(),至少在我2016年的MacBookPro上是这样。这是预期的结果,为什么?例如,假设我有以下数据框N行:N=10A_list=np.random.randint(1,100,N)B_list=np.random.randint(1,100,N)df=pd.D
12