数组公式

Numpy_05 数据处理

别等时光非礼了梦想. 提交于 2020-03-04 08:25:22
github博客传送门 csdn博客传送门 Numpy系列 Numpy_01 创建 指定数据类型 查看维度和数据类型 简单的数学运算 Numpy_02 索引和切片 Numpy_03 转置和轴对换 Numpy_04 通用函数 Numpy_05 数据处理 Numpy_06 数组的文件输入输出 线性代数 利用数组进行数据处理 import numpy as np points = np.arange(-5, 5, 1) # 100个等间距点 xs, ys = np.meshgrid(points, points) # 接收两个一维数组 返回两个二维数组 print('xs:\n', xs) # 返回一个 数组元素个数这么多行的二维数组 内容和一维的数组一样 print('ys:\n', ys) # 返回一个 数组元素个数这么多汗的二维数组 内容为原数组的一个元素为一行 print('-------------------------------') # 两点间距离公式 z = np.sqrt(xs ** 2 + ys ** 2) # 对 xs 的每个元素平方加上 ys 的每个元素平方 再开方并返回 print(z) 将条件逻辑表述为数组运算 xarr = np.array([1.1, 1.2, 1.3, 1.4, 1.5]) yarr = np.array([2.1, 2.2, 2.3,

手动实现一个简单的ArrayList动态数组增删改查

允我心安 提交于 2020-03-03 16:26:33
public class ArrayList < E > { //元素的数量 private int size ; //所有元素 private E [ ] elements ; // private static final int DEFAULT_CAPACITY = 10 ; private static final int ELEMENT_NOT_FOUND = - 1 ; public ArrayList ( int capaticy ) { //capatic 如果小于 DEFAULT_CAPACITY,则返回DEFAULT_CAPACITY capaticy = ( capaticy < DEFAULT_CAPACITY ) ? DEFAULT_CAPACITY : capaticy ; //新建一个长度为capaticy的数组 elements = ( E [ ] ) new Object [ capaticy ] ; } // 使用此空参构造器会创建一个长度为10的数组 public ArrayList ( ) { //this(),调用空参构造器 this ( DEFAULT_CAPACITY ) ; } //清除所有元素 public void clear ( ) { for ( int i = 0 ; i < size ; i ++ ) { /

集合——HashMap的工作原理

我只是一个虾纸丫 提交于 2020-03-03 16:19:27
http://www.importnew.com/16301.html 好的链接 HashMap的工作原理? 1. HashMap的底层结构是 数组加链表 ; a.HashMap包含一个Entry(key,value,next,hash)的内部类,key/value放入HashMap 的时候都会被包装成Entry的 对象 b.HashMap成员就有Entry数组,该数组的大小默认是16,永远都是2的次方数,如果自己给出的不是 2的次方数会转换成大 于并接近自己给的2 的次方数。 put(key,value)就是转换成Entry对象并放入数组中。 2.put方法的实现; c.1 根据key的HashCode进行Hash运算,得到hash值 c.2 根据hash值去确定数组的位置, hash&(table.length-1)等价于hash%(table.length) length是2的次方数该 公式成立, 正获取数组的位置 <bucket>。 c.3 如果这个位置没有元素存在,直接包装成Entry实例,给元素数组附值; 如果计算出的位置有元素已经存在,就会判断key是否相同,如果相同就会覆盖,并且遍历整个链表 如果都不覆盖插入到链表的头部 。 for (Entry<K,V> e = table [ i ]; e != null ; e = e . next ) 注意1

数组介绍

倾然丶 夕夏残阳落幕 提交于 2020-03-03 02:19:54
什么是数组? 数组是一种线性表数据结构,它用一组连续的的内存空间,来存储一组具有相同类型的数据。 数组如何实现随机访问? 基于数组的两大特性:线性表结构和连续的内存空间和相同类型的数据,使得数组可以通过下标直接访问数组元素,从而具有“随机访问”的特性。 具体实现方法: 当计算机需要随机访问数组中的某个元素时,通过寻址公式计算出该元素存储的内存地址,寻址公式如下所示: a[i]_address = base_address + i * data_type_size 其中 i 为数组元素的下标(从0开始),data_type_size 表示数组中每个元素的大小,假如数组中存储的是 int 类型数据,那么 data_type_size 就为4个字节。 数组查找的时间复杂度 根据下标随机访问的时间复杂度为 O(1)。 注意:前提条件是根据下标进行的随机访问,如果是在下标不确定的情况下查找某个元素,那么即便是已经排好序的数组,你用二分查找,时间复杂度也是 O(logn)。 低效的“插入”和“删除” 数组为了保持内存数据的连续性,会导致插入、删除操作比较低效,具体是为什么呢? 插入操作 每当在数组中插入一个新元素的时候,为了给这个新插入的元素挪出一个位置,我们可能需要移动大量的元素。 假设数组的长度为 n,如果在数组的末尾插入元素,那就不需要移动数组了,所以最好时间复杂度为 O(1)

Web_javascript-ECMAScript

て烟熏妆下的殇ゞ 提交于 2020-03-03 00:30:52
javascript介绍 Web前端有三层: HTML:从语义的角度,描述页面 结构 CSS:从审美的角度,描述 样式 (美化页面) JavaScript:从交互的角度,描述 行为 (提升用户体验) 其中JavaScript基础又分为三个部分: ECMAScript:JavaScript的语法标准。包括变量、表达式、运算符、函数、if语句、for语句等。 DOM:文档对象模型,操作网页上的元素的API。比如让盒子移动、变色、轮播图等。 BOM:浏览器对象模型,操作浏览器部分功能的API。比如让浏览器自动滚动。 JavaScript历史背景介绍 布兰登 • 艾奇(Brendan Eich,1961年~),1995年在网景公司,发明的JavaScript。 一开始JavaScript叫做LiveScript,但是由于当时Java这个语言特别火,所以为了傍大牌,就改名为JavaScript。如同“北大”和“北大青鸟”的关系。“北大青鸟”就是傍“北大”大牌。 同时期还有其他的网页语言,比如VBScript、JScript等等,但是后来都被JavaScript打败了,所以现在的浏览器中,只运行一种脚本语言就是JavaScript ECMAScript是一种由Ecma国际(前身为欧洲计算机制造商协会,英文名称是European Computer Manufacturers

数据结构习题之多维数组和广义表

二次信任 提交于 2020-03-01 06:57:10
第五章 多维数组和广义 表 一、基本要求、重点、难点 本章目的是介绍多维数组的逻辑结构特征及其存储方式。特殊矩阵和稀疏矩阵的压缩存储方法。本章重点是熟悉多维数组的存储方式、矩阵的压缩存储方式,难点是稀疏矩阵的压缩存储方示下实现的算法。 二、考核目标、考核要求 1.多维数组,要求达到“理解”层次 1.1多维数组的逻辑特征。 1.2多维数组的顺序存储结构及地址计算方式。 1.3数组是一种随机存取结构的原因。 2.矩阵的压缩存储,要求达到“理解”层次 2.1特殊矩阵和稀疏矩阵的概念。 2.2特殊矩阵的压缩存储时的下标变换方法。 2.3稀疏矩阵的三元组表表示方法及有关算法。 三、练习题 1.单项选择题 1.1二维数组M的元素是4个字符(每一个字符占一个存储单元)组成的串,行下标i的范围是从0到7,列下标j的范围从0到9。则存放M须要存储单元数为( D ) A) 360 B)480 C) 240 D) 320 凝视:由题目知:8*10*4=320。 1.2 N是一个5×8的二维数组,当N按行优先方式存储时,表示该数组的第10个元素的是( C ) A) N[2][2] B)N[2][1] C) N[1][1] D)N[1][2] 凝视:五行八列的数组的第十个的元素为N[1][1]元素为第二行第二列的元素。 1.3 二维数组M[i][j]的元素是4个字符(每一个字符占一个存储单元)组成的串

数据结构(十七)数组和矩阵

点点圈 提交于 2020-03-01 06:55:49
  一、数组的定义:数组是n(n>=1)个相同数据类型的数据元素构成的占用一块地址连续的内存单元的有限集合。所有的线性结构(包括线性表、堆栈、队列、串、数组和矩阵)的顺序存储结构实际上就是使用数组来存储。可见,数组是其他数据结构实现存续存储结构的基础,数组这种数据结构是软件设计中最基础的数据结构。   二、数组的实现机制:数组通常以字节为计数单位,同时根据内存单元地址映像公式来分配内存。用高级语言定义数组时,数组在内存中的首地址由系统动态分配并保存。高级语言通常用数组名保存在内存中的首地址。一旦确定了一个数组的首地址,系统就可计算出该数组中任意一个数组元素的内存地址。由于计算数组各个元素内存地址的时间相等,所以存取数组中任意一个元素的时间也相等,通常称具有这种特性的存储结构为随机存储结构。所以说数组具有随机存储结构的特性。   三、在数值分析中,常常会出现一些拥有许多相同数据元素或零元素的高阶矩阵。将具有许多相同元素或者零元素,且数据分布具有一定规律的矩阵称为特殊矩阵,例如,对称矩阵、三角矩阵和对角矩阵。为了节省存储空间,需要对这类矩阵进行压缩存储。压缩存储的原则是:多个值相同的矩阵元素分配同一个存储空间,零元素不分配存储空间。对于对称矩阵、三角矩阵和对角矩阵来说,首先根据矩阵中任意一个元素与压缩后一位数组的下标的对应关系得到每一个数据元素在数组中存储的位置

hashMap与concurrentHashMap

杀马特。学长 韩版系。学妹 提交于 2020-02-28 12:22:30
一 功能简介 hashMap与concurrentHashMap 都属于集合,用于存储键值对数据,它两最明显的区别是,hashMap是非线程安全的,concurrentHashMap是线程安全的, concunrrentHashMap还有另外的称呼,如 并发容器 概述 HashMap jdk 1.7 实现方式:底层 数组+链表 jdk 1.8 实现方式:底层 数组+链表+红黑树 初始大小:16 负载因子:0.75 扩容:newSize = oldSize*2; map中元素总数超过Entry数组的75%,触发扩容操作 存放键值对要求:key 和 value 都允许为null,这种key只能有1个 线程安全性:不安全 父类:AbstractMap ConcurrentHashMap jdk 1.7 实现方式:底层 segment数组 + hashEntry数组+链表 segment 数组初始化:在申明 ConcurrentHashMap对象的时候 jdk 1.8 实现方式:底层 node数组+链表+红黑树 node数组初始化:put()第一个元素的时候 默认初始大小 16 负载因子:0.75 线程安全 父类 AbstractMap 二 实现逻辑 2.1 hashMap的内部实现逻辑 JDK1.7 hashmap 里面是一个数组,数组中每个元素是一个Entry类型的实例

顺序存储二叉树

杀马特。学长 韩版系。学妹 提交于 2020-02-28 11:04:11
顺序存储二叉树的概念 二叉树的顺序存储结构是把二叉树的所有节点按照一定的次序顺序存储到一组包含N个存储单元的空间中(一般是数组)。在二叉树的顺序存储结构中,只存储节点的值,不存储节点之间的逻辑,节点之间的逻辑关系由数组上下标的顺序来体现。 二叉树的顺序存储原则是:不管给定的二叉树是不是完全二叉树,都看作完全二叉树,即按完全二叉树的层次次序(从上到下,从左到右)把各节点依次存入数组中。 从数据存储来看,数组存储方式和树的存储方式可以互相转换,即在数组可以转换成树,树也可以转成数组 ,看下图 顺序存储二叉树的特点 顺序二叉树通常只考虑完全二叉树 第n个元素的左子节点为 2 * n + 1 第n个元素的右子节点为 2 * n + 2 第n个元素的父节点为 (n-1) / 2 n : 表示二叉树中的第几个元素(按0开始编号如图所示),也是数组的下标 通过以上的特点可以得出 : 顺序存储二叉树本质上是 使用一个数组来存储 二叉树的节点数据, 数组的第n(表示数组的下标)个元素的左子节点的数组 标为2 * n + 1 数组的第n个元素的右子节点的数组 标为2 * n + 2 数组的第n个元素的父节点是(n-1)/2 要满足以上公式的条件是数组下标不能越界 顺序存储二叉树示例 需求: 给你一个数组 {1,2,3,4,5,6,7},要求以二叉树前序遍历的方式进行遍历。 前序遍历的结果应当为 1,2

什么是数组?

依然范特西╮ 提交于 2020-02-27 18:58:35
今天要介绍的主角就是- 数组 ,数组也是数据呈线性排列的一种数据结构。与前一节中的 链表 不同,在数组中,访问数据十分简单,而添加和删除数据比较耗工夫。这和 什么是数据结构 那篇文章中讲到的姓名按拼音顺序排列的电话簿类似。 数组 如上就是数组的概念图,Blue、Yellow、Red 作为数据存储在数组中,其中 a 是数组的名字,后面 [] 中的数字表示该数据是数组中的第几个数据,该数字也就是 数组下标,下标从 0 开始计数 ,比如 Red 就是数组 a 的第 2 个数据。 那么 为什么许多编程语言中的数组都从 0 开始编号的呢 ?先别急,可以先自己思考下,将会在文末进行讲解。 从图中可以看出来,数组的数据是按 顺序存储 在内存的连续空间内的。 由于数据是存储在连续空间内的,所以每个数据的内存地址(在内存上的位置)都可以通过数组下标算出,我们也就可以借此直接访问目标数据,也就是 随机访问 。 比如现在我们想要访问 Red,如果是链表的话,只能使用指针就只能从头开始查找,但在数组中,只需要指定 a[2],便能直接访问 Red。 但是,如果想在任意位置上添加或者删除数据,数组的操作就要比链表复杂多了。这里我们尝试将 Green 添加到第 2 个位置上。 首先,在数组的末尾确保需要增加的存储空间。 为了给新数据 Green 腾出位置,要把已有数据一个个移开,首先把 Red 往后移。 然后把