前几天在Python最强王者群【wen】问了一个pandas数据处理的问题,一起来看看吧。
原始数据如下: 请问怎么把numpy向量[1,1,0]变成[(0,1),(1,1),(2,0)]?
那篇文章聊的是「发生了什么」,今天这篇想聊「然后呢」——对做企业、做跨境、做自媒体的普通人来说,这件事到底能怎么用。...换句话说:发动机在降价,你该操心的是怎么造自己的车,而不是继续围观别人家的引擎有多响。 AI 的红利,从来不属于「最先知道的人」,而属于「最先用起来的人」。...04 PLAYBOOK 在 WorkBuddy 这类「多工具 AI」里怎么干 落到工具层面,这类多工具 AI(以 WorkBuddy 为代表)的价值在于把上面这些场景串起来,而不是只回答单个问题。...这里有个心态分水岭:把 AI 当「问答机」,你得到的是答案;把它当「同事」,你得到的是产能。前者靠灵感,后者靠流程。...下一篇,我们可以聊聊:怎么把「用 AI 省下的时间」,真正变成业务增长。 END 我是 AI约翰,长期关注 AI 落地与产业变化,热衷于把复杂的行业信号讲成人话。
把AI回答变成交付文档,团队该怎么选工具一个每周都在发生的返工场景三个人分头用AI查资料、整理方案,约好周五合成一份Word交出去。...周五打开三份文件:第一份是从对话页直接复制粘进Word的,标题还在,表格全挤成了一行;第二份同事图省事存成了纯文本,满屏是#和|;第三份带几个公式,粘过去变成一串带反斜杠的字母。...所谓"有时候会有",多半是有人把浏览器插件加上去的按钮当成了官方功能——插件装完,按钮就长在对话页里,跟原生的看不出区别。...两者之间没有默认的翻译关系——你把#标题粘进Word,Word只看到一个井号加空格加文字,它没有理由知道你想要一级标题。...这两条路都在同一个地方断掉:内容类型复制粘贴让AI生成HTML纯段落、标题基本可用可用Markdown表格容易错位、挤成一行看模型发挥,不稳定LaTeX公式变成一串反斜杠字母不渲染Mermaid流程图变成一堆代码不渲染团队里的三类人
有了前面的成功经验,钉钉这次把自动翻译添加到了会议场景,支持 11 种外语,不知道可以拯救多少外语听力一般但还要经常跟国际客户开会的同学。...毕竟工作那么忙,谁也没时间把每个会议记录都通读一遍。钉钉总裁叶军还表示,闪记下一步还将尝试智能提取段落大意、自动提取会议行动点等功能,进一步帮大家节省时间。...可以说,钉钉真正擅长的是为这些成熟的技术找到应用方向,做到 AI 技术的产品化,把 AI 变成每个普通人触手可及的生产力工具。
前言 我们每天写的vue代码都是写在vue文件中,但是浏览器却只认识html、css、js等文件类型。...所以这个时候就需要一个工具将vue文件转换为浏览器能够认识的js文件,想必你第一时间就想到了webpack或者vite。...本文以@vitejs/plugin-vue举例,通过debug的方式带你一步一步的搞清楚vue文件是如何编译为js文件的,看不懂你来打我。...通过打印我们发现stylesCode竟然变成了一条import语句,并且import的还是当前App.vue文件,只是多了几个query分别是:vue、type、index、scoped、lang。...lang || "js" } } }; } transformMain函数中的代码执行主流程,其实就是对应了一个vue文件编译成js文件的流程。
二、管控——把违规的入口先堵上1.网站和程序黑名单:不该用的直接禁拦的是"违规网站和软件":网站黑名单禁掉炒股、视频、竞品站,程序黑名单禁掉未授权工具,员工打不开也装不上。...2.限制上网与端口防火墙:只放该放的划的是"能连到哪"的边界:可设只访问内网、禁止所有外网、指定程序运行时断网,或靠IP端口防火墙禁止程序访问特定端口,把暴露面收最小。...三、出口——敏感动作实时拦1.违规外联报警:一碰就断堵的是"私自连外网传数据":发现违规网络连接,报警的同时断网、锁屏甚至关机,把泄密窗口直接掐断。...2.离职预警:核心人要走先知道兜的也是"人"的边界:开启敏感词报警搜招聘、聊离职,离职风险分析综合评估倾向,上网审计看有没有刷招聘站,人走前把权限收紧。...四层递进:记录让动作看得见,管控把违规入口堵上,出口实时拦敏感发送,留痕保证出事查得清。工具把判断变准,判断把工具用对。责编:小赵
我是老李,深圳南山科技园一家做宠物医院SaaS的架构师,团队正在把旧的MVC接口改造成RESTAPI。我们遇到一个很实际的问题:Controller返回对象以后,究竟是谁决定把它变成JSON?...你们后端到底怎么区分?”小李翻了几篇博客,只看到“加Jackson依赖就行”,没找到谁在选择JSON、谁在写Body。白板画满箭头,对象返回却无门。前端催问格式错,源码深处找根因。...状态码若混乱,契约变成错觉。...请求一来一往,对象变成字节。06、排查展开代码语言:TXTAI代码解释诊断树:状态码异常→是400/406/415?...下一篇缺的是全局异常处理,把Jackson解析失败统一转成结构化错误响应。
我们可能注意到了,这样好像没办法表达负数 So,为了表示正与负,先辈们就发明了 「原码」,把左边第一位腾出来,存放符号,正数用 0 来表示,负用 1 来表示 上图就是正负数的 原码,你可能在疑惑为什么上面表里我只画到了数字...,反码 的表示方式其实就是用来处理负数的,也就是除符号位不变,其余位置皆取反存储,0 就存 1,1 就存 0 那么我们再来看 同上,4 位反码的值存储范围也是 -7 ~ +7 当 原码 变成了 反码...~2046,这里指的是正数,因为还有负数,那指数范围就是 -1022~1023,如果没有偏移量的存在,指数就需引入符号位,因为有负数,还需要引入补码,无疑会使计算更加复杂,为了简化操作,才使用无符号的阶码...中数字范围 如果大家真的理解了上文,那么就会发现数字的范围其实有两个概念,最大正数和最小负数,最小正数和最大负数 而最终的数字范围即 最小负数~最大负数 并上 最小正数~最大正数 从S、E、M即数符、阶码...) 所以数字的最大正数和最小负数范围如下 1.7976931348623157e+308 ~ -1.7976931348623157e+308 如果超过这个值,则数字太大就溢出了,在 JS 中会显示
机器之心报道 机器之心编辑部 神经网络还有很多潜力等待发掘。 1965 年,戈登・摩尔归纳了一条经验之谈:集成电路上可以容纳的晶体管数目大约每经过 18 个月到...
参考: rstudio/revealjs: R Markdown Format for reveal.js Presentations (github.com)[1] 前言 我现在习惯上项目汇报,直接展示...之前也听说过revealjs 这个软件,可以实现非常方便的md 格式变成ppt。 没想到有人把他做成了一个R包。 尝试一下 直接cran安装就好了。...chalkboard: theme: chalkboard toggleNotesButton: true menu: numbers: true 你可以把它理解成类似...可以参见:Reveal.js:把你的 Markdown 文稿变成 PPT - 少数派 (sspai.com)[2] 而其实在Rstudio 内部,xieyihui 也写过一个血冷眼的包,用于替代ppt的展示效果.../rstudio/revealjs [2]Reveal.js:把你的 Markdown 文稿变成 PPT - 少数派 (sspai.com): https://sspai.com/post/40657#
floatdouble 补码 前面说的,基本都是正数和 0。 但现实里还有负数,那计算机怎么表示负数? 这里就会用到补码。 先想一个场景 假设现在有个时钟,我让你把 6 点拨到 0 点,怎么做?...正数、负数,很多时候都可以统一用加法器去算。 所以补码不是“故意搞复杂”,而是为了让硬件更方便处理正负数。 逻辑右移与算术右移 回想前面的右移,对正数来说,前面补 0 就行。...所以这里就要区分两种右移: 逻辑右移:高位补 0 算术右移:高位补符号位 也就是说: 正数右移时,高位通常补 0 负数做算术右移时,高位通常补 1 所以你不能简单理解成“逻辑右移专门给正数,算术右移专门给负数...比如:把一个 8 位二进制,在不改变值的情况下,扩展成 16 位 正数:前面补 0 01111111 -> 0000000001111111 负数:前面补 1 11111111 -> 1111111111111111...逻辑与算术 算术很简单,就是四则运算: + - × ÷ 逻辑运算则是: 逻辑非(NOT) 逻辑与(AND) 逻辑或(OR) 逻辑异或(XOR) 它们的含义分别是: 逻辑非:把 0 变成 1,把 1 变成
在深入理解计算机系统cp1:存储单位、数制、编码中解释了字符编码,我们知道了计算机是怎么把字符转化为二进制的;本文将解释数字编码,介绍计算机如何把数字转化为二进制,以及相关的运算问题。...我们发现,本来应该做的是加法运算,但实际上变成了减法运算(-1-3=-4)。 我们首先想到,可以通过将“正数加负数”转化为“正数减正数”来手动纠正这个错误。...那么怎么基于补数和模的概念将“正数加负数”转化为“正数加正数” —— 即怎么令负数等价于一个正数呢?...假设我们现在有一个寄存器可以存放四位二进制数(此时,模为16),我们想要让 1011 变成 0000,最容易想到的办法就是 1011-1011=0000,注意这里是正数加负数。...变成了 1011+0101,其结果是 10000,不要忘了寄存器只能存放四位,所以结果其实是 0000,恰好与我们“正数加负数”时得到的结果无异。
在计算机中,负数是使用它的补码来表示的。所谓补码,就是反码+1。所谓反码,就是二进制数逐位取反。所谓逐位取反,就是1变成0,0变成1。...例如: 正数: 0101负数: 1101 其中最左边的0和1表示的是符号位,0为正数,1为负数。...所以,如果我直接说:数字5在计算机中是怎么储存的,是没有意义的。...应该说,数字5在8位整型下面是怎么储存的、在32位整型下面是怎么储存的: 00000101 # 8位整型 00000000000000000000000000000101 # 32位整型 所以,对于...,所以要把十进制负数转二进制补码的过程反过来 先转成十进制正数对应的二进制数:00000011为3 把负号加上:-3,答案正确 这里需要说明的是,在计算机中做二进制数运算时,一定要明确是在多少位的整型前提下进行的
JAVA中也一样,存储和移位操作的都是补码,正数时都一样,负数时就要注意了。 << 左移位 在二进制格式下,把所有的数字向左移动指定位数,左边的高位移出(舍弃),右边的低位多出来的空位补0。...如果觉得奇怪,想想有时候我们遇到过的场景:一个很大的int正数,乘一个正数后如果结果超过了int能存储的极限,往往就变成了负数,或者一个很小的正数。...System.out.println("x左移2位\t= " + (x << 2)); // 正数超过极限可能变成负数,负数变成正数也不奇怪吧 System.out.println...你呀总是能给我出点新花样.jpg 由于计算机存储和位移的都是补码,正数补码和原码一样,一直右移最后都变成了0,就像一直整除2,最后不管怎么除都是0。...对于正数没影响,对于负数来说,这样一移,直接变成正数了。
直到用了WorkBuddy(我管它叫布丁),才算真正把"让电脑自己干活"这件事跑通了。这篇文章把我真实踩过的坑、怎么配出来的,原原本本讲一遍,希望能帮到跟我一样的小白。...三、我的实际配置(照抄就行)1.把AI电脑助手装到非系统盘我当时图省事想装C盘,后来发现WorkBuddy这类工具的数据目录最好别放系统盘。...四、一个真实场景我跟它说"打开浏览器进网易云音乐",它自己:写了浏览器配置启动自动化服务自动解决了编码小坑真的把Edge浏览器开起来、网易云音乐页面加载出来了那一刻我就知道——这玩意儿真能替我干活,不是嘴上说说...五、踩过的坑(帮你避雷)数据目录别用符号链接/junction挪:我一开始图快用软链接把数据移到别的盘,结果触发了工具的安全检查,所有"执行命令"全被拦(鼠标动不了)。...疑问就问,别自己瞎琢磨:WorkBuddy这种助手,你直接问"这个能不能删""那个怎么配",它查实了再答,比你自己百度撞墙强。积分有免费渠道:每天签到、写篇使用心得发文,基本用不完,别急着花钱买。
怎么把一个对象当做数组使用? 我们知道在JS中对象和数组的操作方式是不一样的,但是我们可以通过封装,给对象加一层包装器,让它可以和数组拥有同样的使用方式。...bar', baz: 42 }; console.log(Object.entries(obj)); // [ ['foo', 'bar'], ['baz', 42] ] Proxy Proxy是JS...const p = new Proxy(a, handler) p.forEach((v, k) => console.log(`${k}-${v}`)) // a-1 // b-2 // c-3 我们应该把以上代码封装为模块...; // null x.lastKeyOf('c'); // 'c' JS
负数 - CF 结果是-1 还原代码为: if(argc < 0) { ecx = -1; } 为正数的情况下 如果是正数 neg一下 0 - 正数 = 负数, 那么CF借位了,其结果是...argc*nVar_4 : nVar_4/argc); 这个代码,无法优化,因为不知道变量是多少.看下汇编代码把....这个很简单了. 1.局部变量给寄存器保存. 2.和9比较 3.小于怎么怎么做 4.大于怎么怎么做. 3.三木运算符的高级汇编表示,利用0和-1 高级代码: printf("%d\r\n", argc =...还是同上 1.如果> 9,那么 sub后结果是正数 2.neg之后. 0 - 正数= 负数 (0 - 正数的时候,借位了,所以CF位是1) 3.sbb 之后 负数- 负数 = 0, 然后- CF位 =...1.sub之后, 结果为负数 2.neg之后( 0 - 负数 = 取负数的绝对值(负负得正),有借位,所以CF = 1) 3.sbb 之后, 正数- 正数 - CF = 正数- 正数 - 1 = -1;
+[]]*~+[]] 嗯,就以这一段网红代码为开头吧 看此文之前,请一定要先阅读这篇文章 「硬核JS」数字之美 「硬核JS」数字之美 「硬核JS」数字之美 重要的事情说三遍,上面这篇文章就是给此文做准备的...0 来处理 其实不止是 JS ,很多语言的位运算都是如此 有符号&无符号 穿插一个小知识点, ECMAScript 整数有两种类型,即有符号整数(允许用正数和负数)和无符号整数(只允许用正数) 在 ECMAScript...-2 十进制数字 0 的按位非即十进制 -1 上面说的都是正数,我们看一个负数的例子 十进制数字 -1 由于是负数,上文我们说过计算机中二进制存储负数为补码方式,所以我们要先求 -1 的补码,-1 二进制原码是...,无符号右移会给空位都补 0 ,不管符号位是什么,这样的话正数的有符号右移和无符号右移结果都是一致的 负数就不一样了,当把一个负数进行无符号右移时也就是说把负数的二进制码包括符号为全部右移,向右被移出的位被丢弃...,左侧用0填充,由于符号位变成了 0,所以结果总是非负的 那么可能就有人要问了,如果一个负数无符号右移 0 位呢,我们可以测试一下 让十进制 -1 进行无符号右移 0 位 -1 是负数,在内存中二进制存储是补码即
负数的二进制怎么搞?-2二进制-10?-3二进制-11?这样不太妥吧,怎么跟着这么一个负数?(问题一) 另外,这种不确定长度的二进制如果是一个数组我该怎么在计算机内存中找的到 (问题二) ?...因为负数原码的加法是相反的(即加一变成减一的操作),我们想着如果给负数原码中的数字01颠倒那么这个数字就会有比较有趣的事情。 原码中本来比较大的数字(-1,-2等)在这样转换后看起来变得很小。...对于补码,你确实无法直接看出它是多少,负数或许理解起来可能还有那么一点点抽象,我们该如何理解补码呢? 我是这么理解的:二进制数把数据分为正负两个部分,分别表示两个区间: ? 什么意思呢?...这个也就是说你可以把负数看成一部分,正数看成一部分。而每个部分的数值也是相同的:无论负数还是正数出去符号位,都是从 000 0000~111 1111(byte为例)分布。...其规则是正数反码等于原码,负数反码符号位不变,数值位0变成1,1变成0. 补码,计算机中数值都是以补码的形式进行计算的,它有效的解决负数加法问题,也可以使符号位直接参与运算。