数组

《python科学技算》之Numpy 广播;ufunc函数的方法

天大地大妈咪最大 提交于 2020-03-25 14:48:10
1.Numpy包中的广播部分: ufunc 函数会对两个数组的对应元素计算,要求俩数组形状相同,如果不同会进行广播处理。 广播处理即所有数组的shape向维数最多数组看齐,低维通过前面加1看齐,如一维的(5,),与二维看齐后为(1,5);只有当某个轴长度相同或为1才能计算 当输入数组的某个轴长度为1时,沿此轴运算时都用第一组的值 Numpy提供了快速生成广播运算数组的ogrid对象 x,y=np.ogrid[:5,:5] 还有一个mgrid对象与此相似,但返回的是已经广播后的数组 ogrid[]内有两种写法: 始:终:步长 or 始:终:长度j 如果已经有了两个一维数组x,y: gy,gx=np.ix_(y,x) 注意此时y是0轴,x是1轴 2.ufunc函数的方法 这些方法只对两个输入一个输出的ufunc对象有效 <op>.reduce(array,axis=0,dtype=None) reduce()方法相当于沿着axis指定的轴对数组进行操作,将<op>运算符插入到沿axis的所有元素中: np.add.reduce([1,2,3]) #6 np.add.reduce([[1,2,3],[4,5,6]]) #[5,7,9], 默认axis=0,same with np.add([1,2,3],[4,5,6]) np.add.reduce([[1,2,3],[4,5,6]]

选择排序

ⅰ亾dé卋堺 提交于 2020-03-25 09:05:06
问题描述: 通过选择排序,从小到大排序一个数组。 算法实现: public static void selectSort(int[] arr) { for(int i = 0; i < arr.length - 1; i++) { int min = arr[i]; int minIndex = i; for(int j = i + 1; j < arr.length; j++) { if(arr[j] < min) { min = arr[j]; minIndex = j; } } if(min < arr[i]) { int temp = arr[i]; arr[i] = min; arr[minIndex] = temp; } }} 算法解析: 1.从未排序数组的第一个元素开始,假设当前值为最小值; 2.在假设最小值元素的下一个元素开始遍历,直到数组末尾,看是否有更小的值,如果有则交换; 3.上一个步骤结束后,数组中会增加一个有序的元素,继续未排序数组的设置比较过程(重复步骤1、2); 4.遍历、比较、交换结束,数组有序。 来源: https://www.cnblogs.com/heibingtai/p/12563834.html

使用ivx实现多级下拉菜单联动效果的经验总结

我只是一个虾纸丫 提交于 2020-03-24 23:54:44
在实际案例中经常会有这样的场景,我们需要对一些信息进行选择,同时这些数据之间还有明确的层级关系,比如选择省市区或者组织部门,当前一个下拉菜单选项固定后下一层级的下拉菜单选项是要随之改变的。今天就说一说如何实现这种多级下拉菜单联动的效果。 1.下拉菜单 下拉菜单是拓展组件的一种,选中下拉菜单再点击拓展组件可以添加下拉菜单选项和下拉菜单选择组两种子组件,下拉菜单选择组内也可以添加下拉菜单选项,它主要是用于选项比较多时对选项进行一个分组展示。 我们可以关闭自定义选项,自己输入一些选项并用逗号分开,此时我们在下拉菜单中添加的下拉菜单和选择就都不会生效了。开启自定义选项则显示的选项就是我们添加的下拉菜单选项了。 在下拉菜单的选择选项事件下,我们可以收到一个参数选中值,就是下拉菜单当前的选择项。其它组件也可以获取下拉菜单的当前选中值。 2.通用变量 通用变量为 Object 类型的数据变量,其初始值为空对象“{ }”。通用变量是一种结构化的数据变量,用于存储具有多级结构的数据。在使用通用变量时,可以通过添加节点的方式将变量结构化,也可以通过导入JSON格式的数据,自动生成各级节点。 我们可以看一下demo中的通用变量的结构,这个通用变量本身是一个对象,对象内包含两个元素,Province和city,其中Province的属性是一个字符串,city的属性是一个数组

ES6 数组的解构赋值

白昼怎懂夜的黑 提交于 2020-03-24 23:34:45
数组的解构赋值 将数组的值,或者对象的属性,提取到不同的变量中 const arr=[1,2,3,4]; let [a,b,c,d]=arr; 更复杂的匹配规则: const arr=[1,2,[3,4],[5,6,7]]; let [,b]=arr; let [,,c,d]=arr; let [,,,[,,g]]=arr; 扩展运算符: ... let arr1=[1,2]; let arr2=[3,4]; let arr3=[5,6]; let arr4=[arr1,arr2,arr3];//三个数组 let arr5=[...arr1,...arr2,...arr3];//合并数组的值 数组的解构赋值与扩展运算符结合 const arr=[1,2,3,4,5]; let [a,b,c]=arr; let[a2,b2,...c2]=arr;//取到剩下的所有值 默认值 没有匹配到的值默认为undefined const arr=[1,undefined,undefined]; let [a,b,c,d]=arr; 如果是undefined,可以在解构赋值时单独再赋值(必须是undefined) const arr=[1,undefined,undefined,null]; let [a,b=2,c=3,d=4]=arr; 交换变量 let a=10,b=20; [a,b]=[b

每个程序员都必须掌握的 8 种数据结构!

不想你离开。 提交于 2020-03-24 12:27:28
作者:IT-Evan https://www.cnblogs.com/IT-Evan/p/12444968.html 数据结构是一种特殊的组织和存储数据的方式,可以使我们可以更高效地对存储的数据执行操作。数据结构在计算机科学和软件工程领域具有广泛而多样的用途。 几乎所有已开发的程序或软件系统都使用数据结构。此外,数据结构属于计算机科学和软件工程的基础。当涉及软件工程面试问题时,这是一个关键主题。因此,作为开发人员,我们必须对数据结构有充分的了解。 在本文中,我将简要解释每个程序员必须知道的8种常用数据结构。 1.数组 数组是固定大小的结构,可以容纳相同数据类型的项目。它可以是整数数组,浮点数数组,字符串数组或什至是数组数组(例如二维数组)。数组已建立索引,这意味着可以进行随机访问。 Fig 1. Visualization of basic Terminology of Arrays 数组运算 · 遍历:遍历所有元素并进行打印。 · 插入:将一个或多个元素插入数组。 · 删除:从数组中删除元素 · 搜索:在数组中搜索元素。您可以按元素的值或索引搜索元素 · 更新:在给定索引处更新现有元素的值 数组的应用 · 用作构建其他数据结构的基础,例如数组列表,堆,哈希表,向量和矩阵。 · 用于不同的排序算法,例如插入排序,快速排序,冒泡排序和合并排序。 2.链表 链表是一种顺序结构

最好、最坏、平均、均摊时间复杂度

荒凉一梦 提交于 2020-03-24 12:05:02
关注公众号 MageByte,设置星标点「在看」是我们创造好文的动力。后台回复 “加群” 进入技术交流群获更多技术成长。 本文来自 MageByte-青叶编写 上次我们说过 时间复杂度与空间复度 ,列举了一些分析技巧以及一些常见的复杂度分析比如 O(1)、O(logn)、O(n)、O(nlogn),今天会继续细化时间复杂度。 1. 最好情况时间复杂度(best case time complexity) 2.最坏情况时间复杂度(worst case time complexity) 3. 平均情况时间复杂度(average case time complexity) 4.均摊时间复杂度(amortized time complexity) 复杂度分析 public int findGirl(int[] girlArray, int number) { int i = 0; int pos = -1; int n = girlArray.lentgh(); for (; i < n; ++i) { if (girlArray[i] == number) { pos = i; break; } } return pos; } 代码逻辑你应该很容易看出来,在无序数组 中查找 number 出现的位置,如果没找到就返回 -1。《唐伯虎点秋香》主角星爷通过这个方法遍历数组找到秋香

java集合类

梦想与她 提交于 2020-03-24 11:55:57
集合的由来:   存储多个对象需要容器类型的变量来存储,数组和StringBuffer是容器类型,但是,StringBuffer只能存储字符串,不能满足需求,而数组的长度是固定的,不能适应变化的 需求,为了适应这种需求,java为我们提供了集合类。 集合和数组的区别:   1、长度区别:      数组是固定长度的      集合是可变长度的   2、内容区别:      数组存储的是同一种数据类型      集合存储的是对象,可以是不同类型的对象   3、元素的数据类型问题:      数组既可以存储基本数据类型,也能存储引用类型      集合只能存储引用类型 集合的继承体系结构:   集合是用来存储多个元素的,但是存储多个元素也是有不同需求的,比如要求元素不能重复,比如要求排序。针对不同需求,java提供了不同的集合类。这多个集合类的数据结构不同,结构不同不重要,重要的是要能够存储东西,并且还有能使用这些东西,如增删查改等。既然这样,那么这些集合类是由共性的,我们把这些共性不断向上提取,最终就能形成集合的继承体系结构,如下图: 上述类图中, 实线边框 的是 实现类 ,比如ArrayList,LinkedList,HashMap等, 折线边框 的是 抽象类 ,比如AbstractCollection,AbstractList,AbstractMap等,而 点线边框 的是 接口

每个程序员都必须掌握的 8 种数据结构!

我只是一个虾纸丫 提交于 2020-03-24 11:40:47
3 月,跳不动了?>>> 作者:IT-Evan https://www.cnblogs.com/IT-Evan/p/12444968.html 数据结构是一种特殊的组织和存储数据的方式,可以使我们可以更高效地对存储的数据执行操作。数据结构在计算机科学和软件工程领域具有广泛而多样的用途。 几乎所有已开发的程序或软件系统都使用数据结构。此外,数据结构属于计算机科学和软件工程的基础。当涉及软件工程面试问题时,这是一个关键主题。因此,作为开发人员,我们必须对数据结构有充分的了解。 在本文中,我将简要解释每个程序员必须知道的8种常用数据结构。 1.数组 数组是固定大小的结构,可以容纳相同数据类型的项目。它可以是整数数组,浮点数数组,字符串数组或什至是数组数组(例如二维数组)。数组已建立索引,这意味着可以进行随机访问。 Fig 1. Visualization of basic Terminology of Arrays 数组运算 · 遍历:遍历所有元素并进行打印。 · 插入:将一个或多个元素插入数组。 · 删除:从数组中删除元素 · 搜索:在数组中搜索元素。您可以按元素的值或索引搜索元素 · 更新:在给定索引处更新现有元素的值 数组的应用 · 用作构建其他数据结构的基础,例如数组列表,堆,哈希表,向量和矩阵。 · 用于不同的排序算法,例如插入排序,快速排序,冒泡排序和合并排序。 2.链表

[Leetcode Weekly Contest]181

天大地大妈咪最大 提交于 2020-03-24 08:41:29
链接: LeetCode [Leetcode]1389. 按既定顺序创建目标数组 给你两个整数数组 nums 和 index。你需要按照以下规则创建目标数组: 目标数组 target 最初为空。 按从左到右的顺序依次读取 nums[i] 和 index[i],在 target 数组中的下标 index[i] 处插入值 nums[i] 。 重复上一步,直到在 nums 和 index 中都没有要读取的元素。 请你返回目标数组。 题目保证数字插入位置总是存在。 直接insert即可,如下。 class Solution: def createTargetArray(self, nums: List[int], index: List[int]) -> List[int]: res = [] for i in range(len(index)): res.insert(index[i],nums[i]) return res [Leetcode]1390. 四因数 给你一个整数数组 nums,请你返回该数组中恰有四个因数的这些整数的各因数之和。 如果数组中不存在满足题意的整数,则返回 0 。 示例: 输入: \(nums = [21,4,7]\) 输出:32 解释: 21 有 4 个因数:1, 3, 7, 21 4 有 3 个因数:1, 2, 4 7 有 2 个因数:1, 7 答案仅为

21个值得收藏的javas技巧

泄露秘密 提交于 2020-03-24 06:58:57
在本文中列出了21个值得收藏的Javascript技巧,在实际工作中,如果能适当运用,则大大提高工作效率。   1 Javascript数组转换为CSV格式   首先考虑如下的应用场景,有一个Javscript的字符型(或者数值型)数组,现在需要转换为以逗号分割的CSV格式文件。则我们可以使用如下的小技巧,代码如下:   var fruits = ['apple', 'peaches', 'oranges', 'mangoes'];  var str = fruits.valueOf();   输出:apple,peaches,oranges,mangoes   其中,valueOf()方法会将Javascript数组转变为逗号隔开的字符串。要注意的是,如果想不使用逗号分割,比如用|号分割,则请使用join方法,如下:   var fruits = ['apple', 'peaches', 'oranges', 'mangoes']; var str = fruits.join("|");   输出: apple|peaches|oranges|mangoes   2 将CSV格式重新转换回Javscript数组   那么如何将一个CSV格式的字符串转变回Javascript数组呢?可以使用split()方法,就可以使用任何指定的字符去分隔,代码如下:   var str =