array

Python Numpy 数组扩展 repeat和tile

南笙酒味 提交于 2019-12-07 12:39:30
numpy.repeat 官方文档 numpy.repeat(a, repeats, axis=None) Repeat elements of an array. 可以看出repeat函数是操作数组中的每一个元素,进行元素的复制。 例如: >>> a = np.arange(3) >>> a array([0, 1, 2]) >>> np.repeat(a, 2) array([0, 0, 1, 1, 2, 2]) >>> a = [[0,1], [2,3], [4,5]] >>> y = np.repeat(a, 2) >>> y array([0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5]) numpy.tile 官方文档 numpy.tile(A, reps) Construct an array by repeating A the number of times given by reps. 可以看出tile函数是将数组A作为操作对象 例如: >>> a = np.array([[1,2],[3,4]]) >>> a array([[1, 2], [3, 4]]) >>> np.tile(a, 2) array([[1, 2, 1, 2], [3, 4, 3, 4]]) >>> a = [[0,1], [2,3], [4,5]] >>> x =

python numpy array 与matrix 乘方

不羁岁月 提交于 2019-12-07 09:00:00
数组array 的乘方(**为乘方运算符)是每个元素的乘方,而矩阵matrix的乘方遵循矩阵相乘,因此必须是方阵。 2*3的数组与矩阵 >>> from numpy import * >>> import operator >>> a = array( [[1,2,3],[4,5,6]] ) >>> a array( [[1, 2, 3], [4, 5, 6]] ) >>> m = mat(a) >>> m matrix( [[1, 2, 3], [4, 5, 6]] ) >>> a ** 2 array( [[ 1, 4, 9], [16, 25, 36]] ) >>> m ** 2 Traceback (most recent call last): File "<stdin>" , line 1 , in < module > File "D:\anaconda\lib\site-packages\numpy\matrixlib\defmatrix.py" , line 356 , in __pow__ return matrix_power(self, other) File "D:\anaconda\lib\site-packages\numpy\matrixlib\defmatrix.py" , line 173 , in matrix_power raise

深度学习基础 - 神经元

。_饼干妹妹 提交于 2019-12-07 07:21:34
深度学习基础 - 神经元 flyfish 以直线为例 y = ∑ i = 1 n w i × x i + b = w ⋅ x + b y=\sum_{i=1}^nw_i\times x_i + b = w\cdot x + b y = i = 1 ∑ n ​ w i ​ × x i ​ + b = w ⋅ x + b Y = W X + B Y=WX+B Y = W X + B 表示很多个神经元之间的关系 数学说 大写就是矩阵 [ y 1 y 2 ] = [ w 1 , 1 w 1 , 2 w 2 , 1 w 2 , 2 ] [ x 1 x 2 ] + [ b 1 b 2 ] \left[\begin{array}{l}{y_{1}} \\ {y_{2}}\end{array}\right]=\left[\begin{array}{ll}{w_{1,1}} & {w_{1,2}} \\ {w_{2,1}} & {w_{2,2}}\end{array}\right]\left[\begin{array}{l}{x_{1}} \\ {x_{2}}\end{array}\right]+\left[\begin{array}{l}{b_{1}} \\ {b_{2}}\end{array}\right] [ y 1 ​ y 2 ​ ​ ] = [ w 1 , 1 ​ w 2 , 1 ​ ​

全排列与next_permutation

梦想与她 提交于 2019-12-07 04:47:37
全排列是面试笔试过程中经常遇到的一个问题。对于练习过的同学来说,这个问题其实 不算一个难题,但是对于没有练习过的同学,或者说只是知道大致思路的同学来说, 要在短时间内写出正确的全排列代码还是有点难度的。 本文是作者在学习全排列时的一个总结笔记,主要包括: [1]. 全排列的递归实现 [2]. 全排列的非递归实现 [3]. STL中的next_permutation 全排列的递归实现 递归方法的全排列思想挺简单的,就是从第一个数字起,将它与其后面的每个数字 进行交换。 这是大部分教程或博客告诉我们的。我在读完这句话后也觉得挺简单的,就是一个 不断交换的过程嘛,例如“123”的全排列就是将1与后面的每个数字交换得到“213”, “321”,再将第二个数字与之后的每个数字交换得到“132”,“231”,“312”,这样就 得到了“123”的全排列:123,213,321,132,231,312. 然而,当让我在纸上把代码写出来时,就懵了,不知道要从何入手了。 我对递归的理解也不是很透彻,相信看到这篇文章的你也不会很透彻, (透彻的话谁还来搜“全排列的递归实现”啊)。 所以,接下来,我们不能用人的思路来考虑问题了,要从计算机的角度出发,从 递归的角度出发来看问题。 那么,问题转化为:输入数据是“123”,期望得到的结果是顺序输出“123”,“132”, “213”,“231”,“312”,

类数组(Array-like)对象应用

核能气质少年 提交于 2019-12-06 16:53:36
类数组(Array-like)对象 slice 方法可以用来将一个类数组(Array-like)对象/集合转换成一个新数组。你只需将该方法绑定到这个对象上。 一个函数中的 arguments 就是一个类数组对象的例子。 function list() { return Array.prototype.slice.call(arguments); } var list1 = list(1, 2, 3); // [1, 2, 3] 除了使用 Array.prototype.slice.call( arguments ) ,你也可以简单的使用 [].slice.call(arguments) 来代替。另外,你可以使用 bind 来简化该过程。 var unboundSlice = Array.prototype.slice; var slice = Function.prototype.call.bind(unboundSlice); function list() { return slice(arguments); } var list1 = list(1, 2, 3); // [1, 2, 3] . 来源: https://www.cnblogs.com/jianxian/p/11996043.html

JavaScript数组去重(12种方法)

做~自己de王妃 提交于 2019-12-06 16:06:27
数组去重,一般都是在面试的时候才会碰到,一般是要求手写数组去重方法的代码。如果是被提问到,数组去重的方法有哪些?你能答出其中的10种,面试官很有可能对你刮目相看。 在真实的项目中碰到的数组去重,一般都是后台去处理,很少让前端处理数组去重。虽然日常项目用到的概率比较低,但还是需要了解一下,以防面试的时候可能回被问到。 注:写的匆忙,加上这几天有点忙,还没有非常认真核对过,不过思路是没有问题,可能一些小细节出错而已。 数组去重的方法 一、利用ES6 Set去重(ES6中最常用) function unique (arr) { return Array.from(new Set(arr)) } var arr = [1,1,'true','true',true,true,15,15,false,false, undefined,undefined, null,null, NaN, NaN,'NaN', 0, 0, 'a', 'a',{},{}]; console.log(unique(arr)) //[1, "true", true, 15, false, undefined, null, NaN, "NaN", 0, "a", {}, {}] 不考虑兼容性,这种去重的方法代码最少。这种方法还无法去掉“{}”空对象,后面的高阶方法会添加去掉重复“{}”的方法。 二、利用for嵌套for

CodeForces - 841B-Godsend-思维

只谈情不闲聊 提交于 2019-12-06 15:25:47
Leha somehow found an array consisting of n integers. Looking at it, he came up with a task. Two players play the game on the array. Players move one by one. The first player can choose for his move a subsegment of non-zero length with an odd sum of numbers and remove it from the array, after that the remaining parts are glued together into one array and the game continues. The second player can choose a subsegment of non-zero length with an even sum and remove it. Loses the one who can not make a move. Who will win if both play optimally? Input First line of input data contains single integer

组合数学一些结论

南楼画角 提交于 2019-12-06 15:07:22
$C(n, m)=\frac{m !}{n !(m-n) !}$ $\left(C_{n}^{0}\right)^{2}+\left(C_{n}^{1}\right)^{2}+\left(C_{n}^{2}\right)^{2}+\cdots+\left(C_{n}^{n}\right)^{2}=C_{2 n}^{n}$ $(1+x)^{n}=\sum_{k=0}^{n}\left(\begin{array}{l}{n} \\ {k}\end{array}\right) x^{k}$ 斯特林公式: $n ! \approx \sqrt{2 \pi n}\left(\frac{n}{e}\right)^{n}$,即$lim_{n\rightarrow \infty}\frac{n!}{\sqrt{2 \pi n}\left(\frac{n}{e}\right)^{n}}=1$ $Catalan$数: $C_{n+1}=\sum_{i=0}^{n} C_{i} \cdot C_{n-i}=C_{n-1} \cdot \frac{4 n-2}{n+1}$ $C_{n+1}=\left(\begin{array}{c}{2 n} \\ {n}\end{array}\right)-\left(\begin{array}{c}{2 n} \\ {n-1}\end{array}\right)$

Array 与 List互转的正确写法

我是研究僧i 提交于 2019-12-06 13:52:43
// list -> array,构造数组时不需要设定大小 String[] array = (String[])list.toArray(); //WRONG; String[] array = list.toArray(new String[0]); //RIGHT String[] array = list.toArray(new String[list.size()]); //RIGHT,但list.size()可用0代替。 // array -> list //非原始类型数组,且List不能再扩展 List list = Arrays.asList(array); //非原始类型数组, 但希望List能再扩展 List list = new ArrayList(array.length); Collections.addAll(list, array); //原始类型数组,JDK8 List myList = Arrays.stream(intArray).boxed().collect(Collectors.toList()); //原始类型数组,JDK7则要自己写个循环来加入了 Arrays.asList(array),如果array是原始类型数组如int[],会把整个array当作List的一个元素,String[] 或 Foo[]则无此问题。Collections

33. Search in Rotated Sorted Array

廉价感情. 提交于 2019-12-06 13:44:06
searching in rotated sorted array, is kinda the same as searching in a common array, the only difference is that, you need to concern which part is you really want. time: O(n) space: O(1) class Solution { public int search(int[] nums, int target) { int lo = 0, hi = nums.length - 1; while (lo <= hi) { int mid = lo + (hi - lo) / 2; if (target == nums[mid]) return mid; if (nums[mid] < nums[lo]) { // 6,7,0,1,2,3,4,5 if (target < nums[mid] || target >= nums[lo]) hi = mid - 1; else lo = mid + 1; } else { // 2,3,4,5,6,7,0,1 if (target > nums[mid] || target < nums[lo]) lo = mid + 1; else hi = mid - 1;