setlocal enabledelayedexpansion只能在批处理文件中工作吗?如何setlocal enabledelayedexpansion在cmd提示符下使用?
例如,threshold根据doc ,此函数已被弃用。
然而,医生没有说任何替代品。是将来就消失了,还是已经有替代品了?如果是,如何找到替代函数?
本教程中提到 pandas groupby 对象是惰性的。
\n\n\n\n\n它\xe2\x80\x99本质上是懒惰的。在您这么说之前,它不会真正执行任何操作来产生有用的结果。
\n
和
\n\n\n\n\n还值得一提的是,.groupby() 确实通过为您传递的每个键构建一个 Grouping 类实例来完成一些(但不是全部)分割工作。然而,保存这些分组的 BaseGrouper 类的许多方法都是延迟调用的,而不是在 init ( ) 处调用的,而且许多方法还使用缓存的属性设计。
\n
所以我做了一些测试来确保 groupby 真的很懒。
\n\n让
\n\ndf=pd.DataFrame(np.random.randint(1,10,size=(1000000,4)))\nRun Code Online (Sandbox Code Playgroud)\n\n然后
\n\n%timeit gg=df.groupby(1)\n35.6 \xc2\xb5s \xc2\xb1 110 ns per loop (mean \xc2\xb1 std. dev. of 7 runs, 10000 loops each)\nRun Code Online (Sandbox Code Playgroud)\n\n这几乎不需要时间。和
\n\n%timeit res=gg.get_group(1)\n2.76 ms \xc2\xb1 8 \xc2\xb5s per loop (mean \xc2\xb1 std. dev. of 7 runs, 100 loops each)\nRun Code Online (Sandbox Code Playgroud)\n\n时间比
\n\n%timeit res=df[df[1]==1]\n6.87 ms \xc2\xb1 …Run Code Online (Sandbox Code Playgroud) 这些天我正在学习C编程语言.我有一个关于指针的问题.
教科书说指针存储内存地址,使用printf("%p",pointer)我们可以显示这个指针在我们的内存中指向的位置.
但每个指针都有一个类型,如int *pointer,long *p等等.int *pointer表示"p是指向int的指针".
我的问题,如果我们写
int *p,i;
p=&i;
*p=99;
Run Code Online (Sandbox Code Playgroud)
如果指针只包含地址信息,程序怎么知道应该用多少位数来存储整数99?因为整数可以是16位int或32位long.
所以我想知道内存中的int指针是否不仅存储地址信息,还存储类型信息?
我有这样的文字
real:: a
real :: b
real c
Run Code Online (Sandbox Code Playgroud)
现在我想匹配那些没有::遵循的真实,在这种情况下,我想只匹配第3真实.所以我试着使用前瞻性的正则表达式
real\s*(?!::)
Run Code Online (Sandbox Code Playgroud)
但这匹配
real :: b
real c
Run Code Online (Sandbox Code Playgroud)
对于\s*零或更多的意义\s,为什么real :: b匹配?
更新
感谢WiktorStribiżew.使用regex101调试工具.我们可以发现backtrack让事情变得复杂.
我提出了另一个类似的任务,但我无法解决
real (xx(yy)) :: a
real (zz(pp)):: b
real (cc(rr)) c
Run Code Online (Sandbox Code Playgroud)
再次,我想匹配real (cc(rr))哪个没有::跟随.
real\s*\(.*?\)+(?!\s*::)
Run Code Online (Sandbox Code Playgroud)
这是我试过的,但失败了.看看正则表达式调试,它也是由于回溯.但是如何正确地做到这一点?
我做了一个测试
%timeit list(map(lambda x:x,range(100000)))
%timeit [(lambda x:x)(i) for i in range(100000)]
Run Code Online (Sandbox Code Playgroud)
给
29 ms ± 4.4 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)
51.2 ms ± 3.76 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)
Run Code Online (Sandbox Code Playgroud)
为什么python lambda函数在列表理解中比在map中慢?
我编写了以下Fortran代码来测试atomic和critical
program test
implicit none
integer::i
integer::a(10),b(10),atmp(10),btmp(10)
a=[1,2,3,4,5,6,7,8,9,10]
b=[12,32,54,77,32,19,34,1,75,45]
atmp=a
btmp=b
write(*,'(1X,10I4)') a+b
print*,'------------------'
!$omp parallel
!$omp do
do i=1,10
B(I) = B(I)+A(I)
end do
!$omp end do
!$omp single
write(*,'(1X,10I4)') b
!$omp end single
a=atmp
b=btmp
!$omp do
do i=1,10
!$omp critical
B(I) = B(I)+A(I)
!$omp end critical
end do
!$omp end do
!$omp single
write(*,'(1X,10I4)') b
!$omp end single
a=atmp
b=btmp
!$omp do
do i=1,10
!$omp atomic
B(I) = B(I)+A(I)
!$omp end atomic
end do …Run Code Online (Sandbox Code Playgroud) 例如:
#!/bin/bash
sss='ls -l'
$sss
ttt='a=100'
$ttt
Run Code Online (Sandbox Code Playgroud)
的输出ls是正确的,但是赋值语句会输出错误信息:
第 5 行:a=100:未找到命令
为什么有区别?
如果赋值不是命令,那它是什么?a=100我的意思是显式和从变量扩展之间有什么区别a=100,我的意思是,bash 看到同样的事情a=100,对吗?为什么他们有不同的解释?
我注意到 pandas Series.map() 对于字典映射来说非常快
\n\n准备数据如下:
\n\na=np.random.randint(0,1000,10**5)\ns=pd.Series(a)\nd=dict(zip(np.arange(1000),np.random.random(1000)))\nRun Code Online (Sandbox Code Playgroud)\n\n定时
\n\n%timeit -n10 s.map(d)\n%timeit -n10 np.vectorize(d.get)(a)\nRun Code Online (Sandbox Code Playgroud)\n\n给出
\n\n1.42 ms \xc2\xb1 168 \xc2\xb5s per loop (mean \xc2\xb1 std. dev. of 7 runs, 10 loops each)\n20.6 ms \xc2\xb1 386 \xc2\xb5s per loop (mean \xc2\xb1 std. dev. of 7 runs, 10 loops each)\nRun Code Online (Sandbox Code Playgroud)\n\n其中第二种方法是我在 stackoverflow 上找到的进行 numpy dict 映射的典型建议。
\n\nnumpy还有另一种典型的解决方案如下
\n\n%%timeit -n10 \nb = np.copy(a)\nfor k, v in d.items():\n b[a==k] = v\nRun Code Online (Sandbox Code Playgroud)\n\n这使
\n\n43.9 ms \xc2\xb1 …Run Code Online (Sandbox Code Playgroud)