V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  dwjgwsm  ›  全部回复第 1 页 / 共 3 页
回复总数  48
1  2  3  
2018-05-26 10:06:22 +08:00
回复了 dwjgwsm 创建的主题 问与答 紧急求助!测试 shutdown 命令导致开机后立马关机
@joyfun 谢谢!反复重启,终于以飞快的手速把定时任务给删除了~
2018-05-18 18:06:12 +08:00
回复了 dwjgwsm 创建的主题 Python 请问如何实现 open pickle 文件后先读后写?
@lieh222 原来是语法写错了!
2018-05-16 15:22:10 +08:00
回复了 dwjgwsm 创建的主题 Python 请问如何实现 open pickle 文件后先读后写?
如果要这样,那还不如 open 二次 第一次读 第二次写
2018-05-16 15:20:07 +08:00
回复了 dwjgwsm 创建的主题 Python 请问如何实现 open pickle 文件后先读后写?
要这么操作才行啊
2018-04-21 10:29:53 +08:00
回复了 dwjgwsm 创建的主题 Python 请问如何在手动停止 py 文件的时候做一些善后工作?
try...except 和 atexit 都不行,singal 倒是可以终止程序,但是不能注册函数,如果注册函数,则无法终止程序,处理函数也不会执行:
#main.py
..........

def hander(a,b):

print('.....test........')

if __name__ == '__main__':

import signal

signal.signal(signal.SIGTERM,hander) #如果注册函数则无法终止程序,不注册则可以终止程序

from PyQt5.QtCore import QCoreApplication

app = QCoreApplication(sys.argv)

main = MainEngine()

main.login()

app.exec_()


#a.py

import signal

import os

os.kill(<pid>,signal.SIGTERM)
2018-04-17 11:23:06 +08:00
回复了 dwjgwsm 创建的主题 Python 请问正则表达式如何排除一个特定的单词?
@xiangyuecn 谢谢~!也可以这么写:
x=r'\([^()]*\)'

x=r'\b(?!MAX)[A-Z]+?' + x
2018-04-08 12:33:52 +08:00
回复了 dwjgwsm 创建的主题 Python 求数组的算术平均,但参数是一个数组,怎么高效实现?
@ipwx 试过了,基本上看不出提升效果.

import numpy as np
cimport numpy as np
cimport cython
np.seterr(invalid='ignore')
cdef int CMAX(int x,int y):
return x if x>y else y
cdef int CMIN(int x,int y):
return y if x>y else x

DTYPE1 = np.float
DTYPE2 = np.int
ctypedef np.float_t DTYPE1_t
ctypedef np.int_t DTYPE2_t
@cython.boundscheck(False)
@cython.wraparound(False)
def MA(np.ndarray[DTYPE1_t, ndim=1] npdata,np.ndarray[DTYPE2_t, ndim=1] n):
cdef int L=npdata.shape[0]
cdef int i=0
cdef np.ndarray res=np.zeros(L)
for i from 0<=i<L:
try:
res[i]=np.mean(npdata[i + 1 - n[i]: i + 1])
except:
res[i] =np.nan
return res
2018-04-08 09:36:17 +08:00
回复了 dwjgwsm 创建的主题 Python 求数组的算术平均,但参数是一个数组,怎么高效实现?
@Kirscheis 谢谢你讲的这么详细,我不是科班出身啊,没学过这些算法.不过大家说的前缀和,线段树,dp,我网上大致看了一下.大体的思路就是把数据分割小,避免重复计算.回头去买本算法的书学一下吧.我觉得作用可能不会很大,因为我的情况不是数据长度很大. 先说一下测试结果:
测试了长度为 10 万的数据,
1.在 python 中,map 和列表推导速度基本相同,大概是 2 秒
2.在参数检查中 not np.isnan()会将速度降低 40%左右,这是之前没注意到的
3.对比 cython 和 python,cython 列表推导只比 python 快 12%(想试一下 map,结果还不知道怎么实现,cython 中好像无法实现子函数,编译报错)
2018-04-07 15:34:47 +08:00
回复了 dwjgwsm 创建的主题 Python 求数组的算术平均,但参数是一个数组,怎么高效实现?
@RecursiveG 数据长度几百,但是调用频率特别高,还有其他十几个类似的函数,所以总体运行下来慢的要死,必须想办法从各种角度优化
2018-04-07 15:25:09 +08:00
回复了 dwjgwsm 创建的主题 Python 求数组的算术平均,但参数是一个数组,怎么高效实现?
def MA(npdata,narr): #narr 是一个和 npdata 等长的 ndarray 数组
L=len(npdata)
j=np.arange(1,L+1) #当时还不知道有 enumerate 这个东西,所以传了一个定位数组进去(从 aijam 那儿学了一招,谢谢!)
def IMA(n, k):
if k < n or n<0 or np.isnan(n):
return np.nan
return np.mean(npdata[k - int(n):k])

return np.array(list(map(IMA, narr, j)))

其实就是和 aijam 一样的遍历算法. 我待会儿试试用列表推导和 map 哪个快,之前网上说应该是 map 快.
之前没有装 cython.昨天买了一个大硬盘重装了系统,把 cython 装上去了(因为 vs 的缘故).准备上 cython 看看.回头报告结果
2018-04-07 15:17:01 +08:00
回复了 dwjgwsm 创建的主题 Python 求数组的算术平均,但参数是一个数组,怎么高效实现?
@RecursiveG 我先把我写的函数放上来吧,当时我觉得没必要贴一坨代码.刚从外面回来,楼上的各位回复还没仔细看.贴完了,在慢慢看
2018-04-07 08:32:47 +08:00
回复了 dwjgwsm 创建的主题 Python 求数组的算术平均,但参数是一个数组,怎么高效实现?
@jmc891205 我觉得恐怕不行,线段树的每个数组起始点和结束点不同.
2018-04-07 08:30:18 +08:00
回复了 dwjgwsm 创建的主题 Python 求数组的算术平均,但参数是一个数组,怎么高效实现?
@aijam 我就是这么做的,不过我是用 map 一个子函数来实现的,子函数做了一点参数检查
2018-04-06 23:36:44 +08:00
回复了 dwjgwsm 创建的主题 Python 求数组的算术平均,但参数是一个数组,怎么高效实现?
@Kirscheis 对的,a b 数组长度相等, 我再描述一下吧,我们计算平均值,都有个参数 n:n 个数字的平均值, 在这里,数组 b=np.array([2,4,3,5,2,1,4,5,3,2])的每个元素都是对应位置的 n ,比如返回数组是 result_arr,则:

result_arr[9]=(a[8]+a[9])/b[9] #b[9]==2,所以是 2 个元素的平均值
result_arr[8]=(a[6]+a[7]+a[8])/b[8] #b[8]==3,所以是 3 个元素的平均值

不过大哥,你说的我表示完全看不懂啊. 你说"这是 dp 的例题",出自哪里啊?
2018-04-06 17:15:24 +08:00
回复了 dwjgwsm 创建的主题 Python 求数组的算术平均,但参数是一个数组,怎么高效实现?
@jmc891205 比如最后一个 8.5=(a[8]+a[9])/b[9]
2018-04-06 17:10:02 +08:00
回复了 dwjgwsm 创建的主题 Python 求数组的算术平均,但参数是一个数组,怎么高效实现?
@kysida map(fun,a,b)的 fun 里面就是用的 np.mean 返回.
2018-04-06 17:08:34 +08:00
回复了 dwjgwsm 创建的主题 Python 求数组的算术平均,但参数是一个数组,怎么高效实现?
抱歉,是我大意了,我以为都能看懂呢,MA 是我自己写的移动平均函数,用的 map 遍历.我想来想去觉得想找更好算法这个问题无解. 卷积,我也想过,问题是每个元素的权重都不同吧. 我没有信心了,想弃楼了
2018-04-05 10:56:22 +08:00
回复了 dwjgwsm 创建的主题 Python 为什么我用 numba 速度不升反降?
@liyuanji1002 算了,运算量整太大了,脱离实际需求也没有意义了.反正优化方案里面已经 pass 掉 numba 了
2018-04-04 16:00:42 +08:00
回复了 dwjgwsm 创建的主题 Python 为什么我用 numba 速度不升反降?
你这个结果也不乐观.看来还是混用不行. 后面再去折腾一下 cython 看看
2018-04-04 15:20:03 +08:00
回复了 dwjgwsm 创建的主题 Python 为什么我用 numba 速度不升反降?
不对啊,我这结果还是 numba 耗时长啊

t1 = time.time()
b=numba_moving_average(a,5)
t2 = time.time()
c=moving_average(a,5)
t3 = time.time()
print(t2-t1)
print(t3 - t2)

结果:

0.7720441818237305
0.008000373840332031
1  2  3  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1738 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 15ms · UTC 16:35 · PVG 00:35 · LAX 08:35 · JFK 11:35
Developed with CodeLauncher
♥ Do have faith in what you're doing.