arr

python学习笔记第二十二天--------NumPy(二)

泄露秘密 提交于 2020-03-01 03:31:46
文章目录 ndarray的矩阵运算 ndarray 的切片、索引操作 ndarray 的条件索引 ndarray的维数转换 transpose() ndarray的矩阵运算 import numpy as np arr = np . arange ( 10 ) print ( arr ) [0 1 2 3 4 5 6 7 8 9] # 矩阵之间的运算,是按矩阵级的运算,每一个元素和对应索引的运算进行运算 print ( arr * arr ) print ( arr + arr ) [ 0 1 4 9 16 25 36 49 64 81] [ 0 2 4 6 8 10 12 14 16 18] # 广播运算,将标量广播到数组的各个元素上 print ( 1 . + arr ) print ( 2 * arr ) [ 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.] [ 0 2 4 6 8 10 12 14 16 18] ndarray 的切片、索引操作 #1. 一维数组的索引和切片操作 arr1 = np . arange ( 10 ) print ( arr1 ) print ( arr1 [ 5 : 9 ] ) [0 1 2 3 4 5 6 7 8 9] [5 6 7 8] # 2. 多维数组的索引和切片操作 #lis = range(10) #arr3 = np

JavaScript数组(一)——排序

吃可爱长大的小学妹 提交于 2020-03-01 03:11:31
JavaScript数组中有一个 reverse() 方法,可用于反转数组,如下代码所示: var arr = [0, 1, 2, 3]; arr.reverse(); console.log(arr);//[3, 2, 1, 0] 但是多数情况下这并不能满足开发的需求,真实的情况往往是降序或升序排列。对数组进行排序很自然地会想到冒泡排序算法,下面我们来看一个例子: var arr = [8, 1, 35, 3, 10]; // 冒泡排序 升序 function bubbleSort(arr){ var temp; for(var i = 0; i < arr.length; i++){ for(var j = i + 1; j < arr.length; j++){ if(arr[i] > arr[j]){ temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } } } return arr; } console.log(bubbleSort(arr));//[1, 3, 8, 10, 35] 这段代码有两个 for 循环,实现的思路是用外层循环依次取出每个元素,用内层循环和剩下的元素进行比较,如果取出的这个数较大,就与较小的数交换位置,这样一轮内循环结束,最小的数就成了第一个元素,依次第二小的数成为第二个元素...

JavaScript Array every() 方法

一曲冷凌霜 提交于 2020-02-29 17:00:39
every()方法是js中的迭代方法,用于检测数组中的元素是否满足指定条件。 1、依次执行数组元素,如果一个元素不满足条件就返回false,不会继续执行后面的元素判断;所有数组元素都满足条件则返回true。 2、不会改变原数组。 语法 /** * @param {参数类型} 参数名 参数说明 * { * function(currentValue, index,arr): //必须 * { * currentValue: 必须。元素值, * index: 可选。元素索引值, * arr: 可选。当前数组对象 * }, * thisValue: 可选。对象作为该执行回调时使用,传递给函数,用作 "this" 的值。 * } */ array.every(function(currentValue,index,arr){},thisValue); 示例 var arr = [ 1, 2, 3, 4, 5, 6 ]; var every = arr.every( function( val, index, arr){ console.log( 'val:' + val); //打印1,不会打印2、3、4、5、6 return val > 4; }); console.log(every); //返回false 来源: https://www.cnblogs.com/plBlog/p

二分法查找

…衆ロ難τιáo~ 提交于 2020-02-29 16:40:10
二分法查找适用查找一组有序数列,例如10,15,25,36,49,55,62,78,99,200这种单调递增的数列 二分查找的基本思想如下: 1、left对应数列第一个数的位置(即0),right对应数列最后一个数的位置(即n-1),mid设置为(left+right)/2。 2、比较需要查找的数值key和mid这个位置所对应的数值大小, 若key小于arry[mid],则right=mid-1,查找区间变为[left,mid-1] 若key大于arry[mid],则left=mid+1,查找区间变为[mid+1,right] 若key等于arry[mid],则查找成功 3、重复上述循环,直至查找成功或left>right 下面给出一张查找的例图,以数组10,15,25,36,49,55,62,78,99,200为例,查找78 查找14 下面贴出代码 public static void main(String args[]){ int[] arr ={10,20,30,40,50,60,70,80,90,100}; int num_input; int mid = 0; int left=0; int right; System.out.println("请输入要查找的数"); Scanner sc =new Scanner(System.in) ; num_input=sc

图文并茂!一文教你掌握九大排序算法之直接选择排序

旧巷老猫 提交于 2020-02-29 10:00:05
目录 1. 直接选择排序原理介绍 2. 流程图 2. 代码实现(Java) 1. 直接选择排序原理介绍 以升序为例,直接选择排序每一轮都会从未排序的数组元素中选出一个最小值放到已排序数组的末尾处,直到整个数组有序,选择排序是一种非常简单明了的排序算法,无论在任何情况下其时间复杂度都为O(n^2),所以用到这个排序算法时,数据规模应尽量小。 2. 流程图 2. 代码实现(Java) /** * @author Zeng * @date 2020/2/28 23:41 */ public class SelectSort { public static void swap(int[] arr, int i, int j){ int temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } public static void selectSort(int[] arr){ for (int i = 0; i < arr.length; i++){ int index = i; for (int j = i + 1; j < arr.length; j++){ if(arr[index] > arr[j]){ index = j; } } swap(arr, i, index); System.out.print("第"+(i+1)+"轮排序结果:"

排序算法六:快速排序

☆樱花仙子☆ 提交于 2020-02-28 23:58:21
排序效率在同为O(N*logN)的几种排序方法中效率较高 思想: 通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。 平均时间复杂度: nlog2n ,空间复杂度: log2n,不稳定 public class QuickSort { /** * 快速排序 * @param arr:数组名 * @param leftbound:数组的起始下标 * @param rightbound:数组的结束下标 */ public void sort ( int [ ] arr , int leftbound , int rightbound ) { if ( leftbound >= rightbound ) return ; int mid = partition ( arr , leftbound , rightbound ) ; //轴的位置 sort ( arr , leftbound , mid - 1 ) ; //对轴前面的数进行快排 sort ( arr , mid + 1 , rightbound ) ; //对轴后面的数进行快排 } /** * 将数与轴的位置的数进行大小比较,小的数在轴的前面,大的数在轴的后面 * 左

排序算法五:归并排序

江枫思渺然 提交于 2020-02-28 23:19:59
效率仅次于快排的一种排序算法, 一般用于对总体无序,但是各子项相对有序的数列 思想: 采用分治法的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序 平均时间复杂度为 nlog2n ,空间复杂度为n,稳定 public class Merge { /** * 对数组进行排序 * @param arr:要排序的数组 * @param left:数组的开始下标 * @param right:数组的终止下标 */ public void sort ( int [ ] arr , int left , int right ) { if ( left == right ) return ; int mid = ( left + right ) / 2 ; //记录中间位置下标,将数组分成两半 sort ( arr , left , mid ) ; //左边排序 sort ( arr , mid + 1 , right ) ; //右边排序 merge ( arr , left , mid + 1 , right ) ; } /** *归并排序 * @param arr:要排序的数组 * @param leftptr:排序的左指针 * @param rightptr:排序的右指针 * @param bound:边界 */ public

Js日常笔记之数组

瘦欲@ 提交于 2020-02-28 21:03:05
1、Array 构造函数 有一个很大的问题,就是不同的参数,会导致它的行为不一致,es6好像专门为此对数组有升级 因此,不建议使用new Array生成新数组,直接使用数组字面量[...]是更好的做法。 2、Array.isArray 方法用来判断一个值是否为数组。它可以弥补 typeof 运算符的不足 var a = [1, 2, 3]; typeof a // "object" Array.isArray(a) // true 3、push()和pop() 结合使用,就构成了“后进先出”的栈结构(stack) push 方法用于在数组的末端添加一个或多个元素,并返回添加新元素后的数组长度, pop 方法用于删除数组的最后一个元素,并返回该元素。 4、join() 方法以参数作为分隔符,将所有数组成员组成一个字符串返回。如果不提供参数,默认用逗号分隔。 如果数组成员是 undefined 或 null 或空位,会被转成空字符串 [undefined, null].join('#') // '#' ['a',, 'b'].join('-') // 'a--b' 通过 call 方法,这个方法也可以用于字符串 Array.prototype.join.call('hello', '-') // "h-e-l-l-o" 5、concat() 方法用于多个数组的合并。返回一个新数组

JAVA 堆 与 优先级队列 关系

流过昼夜 提交于 2020-02-28 20:28:22
一 : 堆 什么是堆? 堆可以理解成一个完全二叉树 只不过堆是以数组的形式表现出来的 满足任意结点的值都大于其子树中结点的值,叫做大堆,或者大根堆,或者最大堆4. 反之,则是小堆,或者小根堆,或者最小堆。 大堆与小堆可以用于筛选数组之中最大值或是最小值, 比如在千万级别的数据中找到前五个最大的值,那么就要建立一个有五个元素的小堆,每一次筛选,如果筛选的元素比堆顶就找到堆顶最小的元素将其换下来 那么怎么进行堆的排序呢? 有向上调整和向下调整 如果是一个不规则的堆,那么就要从最后一个非叶子节点向下调整 这里以大堆举例 public static void shiftDownBig ( int [ ] arr , int sz , int parent ) { int child = 2 * parent + 1 ; // left child // 从parent节点开始,一直调整到叶子节点结束 while ( child < sz ) { //right child : child + 1 从两个孩子节点中选一个最大的 if ( child + 1 < sz && arr [ child + 1 ] > arr [ child ] ) { ++ child ; } if ( arr [ child ] > arr [ parent ] ) { //如果child 大于 parent,

JavaScript sort()

家住魔仙堡 提交于 2020-02-28 15:18:16
JavaScript sort() 方法 定义和用法 sort() 方法用于对数组的元素进行排序。 语法 arrayObject .sort( sortby ) 参数 描述 sortby 可选。规定排序顺序。必须是函数。 返回值 对数组的引用。请注意,数组在原数组上进行排序,不生成副本。 说明 如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序进行排序。要实现这一点,首先应把数组的元素都转换成字符串(如有必要),以便进行比较。 如果想按照其他标准进行排序,就需要提供比较函数,该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字。比较函数应该具有两个参数 a 和 b,其返回值如下: 若 a 小于 b,在排序后的数组中 a 应该出现在 b 之前,则返回一个小于 0 的值。 若 a 等于 b,则返回 0。 若 a 大于 b,则返回一个大于 0 的值。 实例 例子 1 在本例中,我们将创建一个数组,并按字母顺序进行排序: <script type="text/javascript"> var arr = new Array(6) arr[0] = "George" arr[1] = "John" arr[2] = "Thomas" arr[3] = "James" arr[4] = "Adrew" arr[5] =