就会很自然的写下这种方法 unsigned int f2(unsigned int val) { int retval = 1; while (retval < val) {...retval <<= 1; } return retval; } 在改进一下,就判断他是不是2的次方先。...1 : val; } } 想想,如果一个数,00101 如果能找到 00100的话就好了,这样在左移一位就完事了,但是想得时候就想要求地00100的话,不就要循环了。然后就卡住了。...把这个数,从高位数,第一个1的右边填满,再加1...溜溜溜溜的。...unsigned int val){ { if (val & (val - 1)){ val |= val>>1; val |= val>>2;
在一个风和日丽的早晨,我正悠闲地喝着Coffe,突然领导向我走来,我赶紧熟练地切出VSCode,淡定自若地问:领导,什么事?...原型链写法 要开始编写插件就得先了解JS模块化,早期的模块化是利用了函数自执行来实现的,在单独的函数作用域中执行代码可以避免插件中定义的变量污染到全局变量,举个栗子,以下代码实现了一个简单随机数生成的插件...如今ES模块化已经可以轻松应对功能拆分了,所以我们只需要一个打包器,Rollup.js 就是不错的选择,有了它我们可以更优雅地编写插件,它会帮我们打包。...许多大型框架例如 Vue、React 都是用它打包的。 Rollup 是一个用于 JavaScript 的模块打包器,它将小段代码编译成更大更复杂的东西,例如库或应用程序。...自动化API文档 一个 JS 插件如果没有一份文档,如同一台精密的仪器没有说明书。当别人使用你的插件时,他不可能去查看源码才知道这个插件有哪些方法、用途如何、要传哪些参数等。
来自 HashMap 的内部静态方法实现: /** * Returns a power of two size for the given target capacity....final int tableSizeFor(int cap) { int n = cap - 1; n |= n >>> 1; n |= n >>> 2;
题目 判断一个正整数是否是2的整数幂(如4是2的2次方,返回true;5不是2的整数次幂,则返回false)。要求性能尽可能高。...第一种考虑(乘法) 创建一个中间变量temp,初始值是1,然后进入一个循环,每次循环都让temp和目标值进行比较,如果相等,则说明目标是2的整数次幂,如果不相等,则让temp乘以2,继续循环比较,直到temp...第二种考虑(除法) 2的整数次幂都能被2整除,所以进入一个循环,让目标对2求余,如果有余数,则目标不是2的整数次幂,如果没有余数,然后目标赋值为目标除以2,直到目标小于1,当目标小于1的时候则说明明目标是...2的整数次幂。...否 是不是发现了,如果一个整数是2的整数次幂,那么当它转化成二进制时,只有最高位是1,其它位都是0!
之前写过如何判断一个数是否是 2 的整数次幂,不知道大家是否还有印象。...[1271624526281_.pic.jpg] 但是如何获取他的二进制呢。。。 好吧我上网查一下吧,得到下面 Integer.tobinaryString() 那我们就开始吧。...答: 是用来获取最左边的bit(其他bit位为0)所代表的数值. 也就是 101001 和 100001 得到的都是 100000 。 说了这么多,4 的整数次幂还没说呢?这边马上开始。...那就是先满足第和 2 的整数幂一样的条件 return n >0 && (Integer.highestOneBit(num) == num); 然后在获取其转成二进制的长度是奇数(偶数个 0 在加一个...Integer.toBinaryString(num); 这个可以获取转成二进制的字符串然后 Integer.toBinaryString(num).length() % 2 ==1 这不成了!
之前写过如何判断一个数是否是 2 的整数次幂,不知道大家是否还有印象。...但是如何获取他的二进制呢。。。 好吧我上网查一下吧,得到下面 Integer.tobinaryString() 那我们就开始吧。...也就是 101001 和 100001 得到的都是 100000 。 说了这么多,4 的整数次幂还没说呢?这边马上开始。...那就是先满足第和 2 的整数幂一样的条件 return n >0 && (Integer.highestOneBit(num) == num); 然后在获取其转成二进制的长度是奇数(偶数个 0 在加一个...Integer.toBinaryString(num); 这个可以获取转成二进制的字符串然后 Integer.toBinaryString(num).length() % 2 ==1 这不成了!
除其他外,它包括: 功能强大的N维数组对象 精密广播功能函数 集成 C/C+和Fortran 代码的工具 强大的线性代数、傅立叶变换和随机数功能 机器学习和数据分析,numpy 是最常用的科学计算库,可以用极简的...基础运算 编程语言大多数运算都是针对简单数值的,复杂运算是通过相应的数据结构结合程序逻辑计算的。numpy 虽然是针对复杂数据结构(例如矩阵)构造的,但它提供了和简单数值计算一样方便的操作。...幂运算 幂运算的运算符为 ** ,即两个星号(一个星号表示乘),例如计算 x 的平方:x**2,x 的立方:x**3,等等 开方,相当于计算 1/2 次方,即 x**(1/2) 或者 x**0.5,因为常用...因为线性代数研究的是向量及向量组(矩阵)的纯数学计算,所以丢弃了坐标系的概念,只保留了向量的样子,所以造成了向量难以理解的现象。 简单说,向量就是一个数值的数组。...加法 x+2, 减法 x-2 处罚 x/2 矩阵幂运算 向量、矩阵既然可以看成一个数,幂运算就很容易理解了,例如矩阵 ? 矩阵 m m 平方就可以写成 m**2, 结果为: ?
这仅仅表明它是一个未知的维度,我们希望 Numpy 来算出这个未知的维度应该是多少:Numpy 将通过查看数组的长度和剩余维度来确保它满足上述标准。让我们来看以下例子: ?...当使用 -1 参数时,与-1 相对应的维数将是原始数组的维数除以新形状中已给出维数的乘积,以便维持相同数量的元素。 Argpartition:在数组中找到最大的 N 个元素。 ?...Numpy 内置的 Clip 函数可以解决这个问题。Numpy clip () 函数用于对数组中的值进行限制。给定一个区间范围,区间范围外的值将被截断到区间的边界上。...:如何找到仅在 A 数组中有而 B 数组没有的元素 返回数组中不在另一个数组中的独有元素。...carray([1, 2, 5, 9]) 小结 以上 5 个 Numpy 函数并不经常被社区使用,但是它们非常简洁和优雅。
这仅仅表明它是一个未知的维度,我们希望 Numpy 来算出这个未知的维度应该是多少:Numpy 将通过查看数组的长度和剩余维度来确保它满足上述标准。...当使用 -1 参数时,与-1 相对应的维数将是原始数组的维数除以新形状中已给出维数的乘积,以便维持相同数量的元素。 Argpartition:在数组中找到最大的 N 个元素。...Numpy 内置的 Clip 函数可以解决这个问题。Numpy clip () 函数用于对数组中的值进行限制。给定一个区间范围,区间范围外的值将被截断到区间的边界上。...:如何找到仅在 A 数组中有而 B 数组没有的元素 返回数组中不在另一个数组中的独有元素。...carray([1, 2, 5, 9]) 小结 以上 5 个 Numpy 函数并不经常被社区使用,但是它们非常简洁和优雅。
其中,加法、减法、乘法、哈达玛乘积和克罗内克乘积是二元运算,两个操作变量都是矩阵;数乘运算也是二元运算,只不过它的两个操作变量是一个数和一个矩阵;转置、求逆和求幂都是一元运算,操作变量只有一个矩阵。...在这些运算中,我们需要注意的是加法、减法和哈达玛乘积必须确保两个矩阵形状相同;乘法运算必须确保第一个矩阵的列数和第二个矩阵的行数必须完全相等;求逆运算必须确保矩阵是一个可逆方阵;求幂运算,求的是方阵的幂...,二维数组的减法相当于矩阵的减法,一个数乘上一个二维数组相当于一个数乘上一个矩阵,二维数组的转置相当于矩阵的转置。...n 次幂是在对二维数组中的每个元素计算 n 次幂并得到一个新的二维数组。...02 矩阵 在讲矩阵运算之前,我们首先需要看一下通过一个二维数组来构造一个矩阵的方法,这样的方法有很多,我比较推荐去使用 numpy.mat 函数,这个函数接受一个参数,该参数就是二维数组。
有意思的是,我们可以将新形状中的一个参数赋值为-1。这仅仅表明它是一个未知的维度,我们希望 Numpy 来算出这个未知的维度应该是多少:Numpy 将通过查看数组的长度和剩余维度来确保它满足上述标准。...当使用 -1 参数时,与-1 相对应的维数将是原始数组的维数除以新形状中已给出维数的乘积,以便维持相同数量的元素。 Argpartition:在数组中找到最大的 N 个元素。 ?...Numpy 内置的 Clip 函数可以解决这个问题。Numpy clip () 函数用于对数组中的值进行限制。给定一个区间范围,区间范围外的值将被截断到区间的边界上。...:如何找到仅在 A 数组中有而 B 数组没有的元素 返回数组中不在另一个数组中的独有元素。...carray([1, 2, 5, 9]) 小结 以上 5 个 Numpy 函数并不经常被社区使用,但是它们非常简洁和优雅。
这仅仅表明它是一个未知的维度,我们希望 Numpy 来算出这个未知的维度应该是多少:Numpy 将通过查看数组的长度和剩余维度来确保它满足上述标准。让我们来看以下例子: ?...当使用 -1 参数时,与-1 相对应的维数将是原始数组的维数除以新形状中已给出维数的乘积,以便维持相同数量的元素。 在 Argpartition:在数组中找到最大的 N 个元素。 ?...Numpy 内置的 Clip 函数可以解决这个问题。Numpy clip () 函数用于对数组中的值进行限制。给定一个区间范围,区间范围外的值将被截断到区间的边界上。...:如何找到仅在 A 数组中有而 B 数组没有的元素 返回数组中不在另一个数组中的独有元素。...carray([1, 2, 5, 9]) 以上 5 个 Numpy 函数并不经常被社区使用,但是它们非常简洁和优雅。
sum() 此函数计算数组元素的总和 另见 第 2 章,“高级索引和数组概念”中的“布尔值索引”秘籍 查找素因数 素因数是质数,它们精确地除以整数而不会留下余数。...使用 NumPy modf()函数获取b数组的分数部分: fractions = np.modf(np.sqrt(b2))[0] 查找0分数。...NumPy 函数arange()创建一个数组,以容纳从 100 到 999 的三位数。...创建一个三位数的数字数组。...它返回直方图值和桶的边界。 polyfit()函数将数据拟合给定阶数的多项式。 在这种情况下,我们选择了线性拟合。 我们发现了幂律法-您必须谨慎地提出此类主张,但证据看起来很有希望。
NumPy的向量运算符已达到C++级别,避免了Python的慢循环。 NumPy允许像普通数字一样操作整个数组(加减乘除、整除、幂): ?...查找元素的一种方法是np.where(a==x)[0][0],它既不优雅也不快速,因为要查找的项需要从开头遍历数组的所有元素。...为了使用任意维数的通用表示法,NumPy引入了axis的概念:axis参数实际上是所讨论索引的数量:第一个索引是axis=0,第二个索引是axis=1,等等。...△RGB图像数组(为简便起见,上图仅2种颜色) 如果数据的布局不同,则使用concatenate命令堆叠图像,并在axis参数中提供显式索引数会更方便: ?...最后,还有一个函数,可以在处理多维数组时节省很多Python循环,并使代码更简洁,这就是爱因斯坦求和函数einsum: ? 它将沿重复索引的数组求和。
注意:以下标红的部分是笔者学习后认为比较重要,以及常用的一些操作。 一、如何创建一个numpy数组? ---- 1、创建numpy数组的方法有很多,其中最常用的是利用list创建数组。...3、你不可以给list中的元素全部直接加一个数,但是你可以对array进行这样的操作 list1 + 2 # error arr1d + 2 #correct #输出结果 > array([2,...: arr2d[b] 四、如何变化数组的行与列?...列 print("Row wise minimum: ", np.amin(arr2, axis=1))#行 七、如何利用一个已有的数组创建一个新的数组?...=int)#1-50,划分十个数 2、对数切分:(注意起始与中止的数是要以幂次的形式,这里底为10,次方分别为1和50) np.logspace(start=1, stop=50, num=10, base
领取专属 10元无门槛券
手把手带您无忧上云