首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

numpy学习笔记 - numpy常用函

(x, y)    # 每一位上的最大值 arr = np.random.normal(size=(2, 4)) * 5 print(arr) print(np.modf(arr))    # 将小数部分与整数部分分成两个单独的数组...8], [7, 6]]) # 只指定condition时,返回np.nonzero(),即非零元素的索引 x = np.arange(9.).reshape(3, 3) np.where( x > 5...) x[np.where( x > 3.0 )]  # 将索引值带入原数组,得到满足大于3条件的元素 arr = np.random.normal(size=(4,4)) print(arr) np.where...arr.cumprod(1) # 每行的累计积 注: 关于numpy中axis的问题 axis=1可理解为跨列操作 axis=0可理解为跨行操作 # 布尔型数组 arr = np.random.normal...'Bob', 'Will', 'Joe', 'Joe']) print(np.unique(names)) # 纯Python print(sorted(set(names))) # 判断values中的列表元素是否在数组

85310
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Python Numpy随机数生成的实战技巧分享

    在数据科学、机器学习和数值模拟中,随机数的生成是非常重要的一个环节。无论是在模拟随机现象、生成测试数据,还是在训练模型时进行随机初始化,随机数都扮演着至关重要的角色。...# 生成一个在0到10之间的随机整数 random_int = np.random.randint(0, 10) print("随机整数:", random_int) # 生成一个3x3的随机整数数组...np.random.randint(0, 10) 生成了一个在0到10之间的随机整数,而 np.random.randint(0, 100, size=(3, 3)) 生成了一个3x3的随机整数数组,...随机选择 np.random.choice() 可以从给定的数组中随机选择元素,支持有放回和无放回的抽样。..., random_choice) 在这个示例中,np.random.choice() 从数组 [1, 2, 3, 4, 5] 中随机选择了5个元素,replace=False 表示无放回抽样。

    11810

    面试系列之-HashMap实现原理(JAVA基础)

    ,当链表长度超过阈值(8)时,将链表转换为红黑树,这样大大减少了查找时间;链表长度大于8时转化为红黑树,小于6时转化为链表; HashMap的实现原理 首先有一个每个元素都是链表(可能表述不准确)的数组...,当添加一个元素(key-value)时,就首先计算元素key的hash值,以此确定插入数组中的位置,但是可能存在同一hash值的元素已经被放在数组同一位置了,这时就添加到同一hash值的元素的后面,他们在数组的同一位置...而当链表长度太长时,链表就转换为红黑树,这样大大提高了查找的效率;当链表数组的容量超过初始容量的0.75时,再散列将链表数组扩大2倍,把原链表数组的搬移到新的数组中; 数组的初始容量为16,而容量是以2...通过哈希表函数/哈希算法,将hash值转换成数组的下标,下标位置上如果没有任何元素,就把Node添加到这个位置上。...,可能导致get为null:如果线程T1put一个元素,发现需要resize,table重新创建时,是一个空的数组,此时如果其他线程使用get()时,会得到null; 随机增删、查询效率都很高的原因 增删是在链表上完成的

    1.8K22

    Redis的设计与实现(5)-整数集合

    升级 每当我们要将一个新元素添加到整数集合里面, 并且新元素的类型比整数集合现有所有元素的类型都要长时, 整数集合需要先进行升级 (upgrade) , 然后才能将新元素添加到整数集合里面....升级整数集合并添加新元素共分为三步进行: 根据新元素的类型, 扩展整数集合底层数组的空间大小, 并为新元素分配空间; 将底层数组现有的所有元素都转换成与新元素相同的类型, 并将类型转换后的元素放置到正确的位上..., 而且在放置元素的过程中, 需要继续维持底层数组的有序性质不变; 将新元素添加到底层数组里面....但是, 因为整数集合可以通过自动升级底层数组来适应新元素, 所以我们可以随意地将 int16_t , int32_t 或者 int64_t 类型的整数添加到集合中, 而不必担心出现类型错误, 这种做法非常灵活...总结 整数集合是集合键的底层实现之一. 整数集合的底层实现为数组, 这个数组以有序, 无重复的方式保存集合元素, 在有需要时, 程序会根据新添加元素的类型, 改变这个数组的类型.

    20110

    numpy(一)

    ((3,3)) #创建3*3在0-1之间均匀分布的随机数组成的数组 np.random.normal(0,1,(3,3)) #创建3*3的均值为0方差为1的正态分布随机数数组 np.random.randint...(0,10,(3,3)) #创建3*3在0-10区间的随机整数型数组 np.eye(3) # 创建3*3的单位矩阵 np.empty(3) #创建一个有3个整数型组成的未初始化数组,值可以使内存空间的任意值...np属性:   np.ndim 数组的维度   np.shape 数组的每个维度大小   np.size  数组的总大小   dtype 数据类型 切片,索引:   x=np.array([5,2,3,7,8,9...0,0]=12 #修改值   #当将一个浮点型插入到整数型数组中时,浮点型会被截断   一维切片:   x=np.arange(10)   x[:5]  #取前五个元素   x[5:] #取后五个元素...2] #取三行,列隔行取   x2[::-1,::-1] # 逆向取   x2[:,0] #取第一列   x2[0,:] # 取第一行   x2[0]  #取第一行简化        *注意切片获取到的元素改变原数组也会改变

    44820

    剑指Offer题解 - Day54

    然后判断s和目标值的关系,如果相等,则将滑动窗口内的数字整合成数组,并添加到结果数组中。 s ≥ target的时候需要将滑动窗口缩小,也就是将左侧的值从s中减去,并右移左指针。...s 的时候需要将滑动窗口扩大,也就是将右指针右移,并将右侧的值添加到s中。...分析: 当s === target时,我们需要将滑动窗口内的元素生成一个数组,并添加到结果数组中。生成的方是通过map遍历,将每个元素的值设置为 index + i ,从而得到递增的正整数数组。...还需要注意的是,缩小滑动窗口时,需要先将当前左指针所在的数字从s中减去,再右移左指针。如果先右移左指针的话,就会多减去 「1」 ,导致最终结果异常。...同样的,扩大滑动窗口的时候,需要先右移右指针,再将当前右指针所在的数字添加到s中。如果先添加右指针元素的话,就会导致右指针元素重复添加一次,从而少添加1,导致最终结果异常。 总结 本题考查双指针。

    15420

    猿创征文|数据导入与预处理-第2章-numpy

    比如说,二维数组相当于是两个一维数组,其中第一个一维数组中每个元素又是一个一维数组。所以一维数组就是 NumPy 中的轴(axis),第一个轴相当于是底层数组,第二个轴是底层数组里的数组。...中的range()函数,不同的是,arange()函数会返回一维数组而非列表。...4.1 使用整数索引访问元素 numpy中可以使用整数索引访问数组,以获取该数组中的单个元素或一行元素。 一维数组访问元素的方式与列表访问元素方式相似,它会根据指定的整数索引获取相应位置的元素。...: 3 当使用整数索引访问二维数组时,二维数组会根据索引获取相应位置的一行元素,并将该行元素以一维数组的形式进行返回。...与Python列表不同,数组在参与算术运算时无需遍历每个元素,便可以对每个元素执行批量运算,效率更高。

    5.8K30

    Redis05-Redis的数据结构之整数集合

    int8_t contents[]; } intset; contents 数组是整数集合的底层实现,整数集合的每个元素都是contents数组的一个数组项(item),各个项在数组中按值的大小从小到大的有序排列...因为每个集合元素都是int16t类型的整数值,所以contents数组的大小等于 size of(int16_t)*5=80位 整数集合的升级 每当我们要将一个新元素添加到整数集合里面,并且新元素的类型比整数集合现有所有元素的类型都要长时...将底层数组现有的所有元素都转换成新元素相同的类型,并将类型转换后的元素放置在正确的位置上,而且在放置元素的过程中,需要继续维持底层数组的有序性不变。 将新元素添加到底层数组里面。...升级的好处 提升灵活性 因为整数集合可以通过自动升级底层数组类型适应新元素,所以我们可以随意地将int16t、int32t或int64_t类型的整数添加到集合中,而不必担心出现类型错误,这种做法非常灵活...,在有需要时,程序为会根据新添加元素的类型,改变这个数组的类型,升级操作为整数集合带来了操作上的灵活性,并且尽可能节约了内存。

    38250

    python的numpy入门简介

    floor 计算各元素的floor值,即小于等于该值的最小整数。 rint 将各元素值四舍五入到最接近的整数,保留dtype。 modf 将数组的小数部分与整数部分以两个独立数组的形式返还。...NumPy的ndarray 快速的元素级数组函数 • 二元函数 I 类型 说明 add 将数组中对应的元素相加 subtract 从第一个数组中减去第二个数组中的元素 multiply 数组元素相乘 divide..., floor_divide 除法或向下取整除法 power 对第一个数组中的元素A和第二个数组中对应位置的元素B,计算A^B。...mod 元素级的求模计算 • 例子代码: universal_functions.py 类型 说明 copysign 将第二个数组中的符号复制给第一个数组中的值 greater, greater_equal...in1d(x, y) 得到一个表述"x的元素是否包含于y"的布尔型数组 setdiff1d(x, y) 集合的差,即元素在x中且不在y中 setxor1d(x, y) 集合的异或,即存在于一个数组中但不同时存在于两个数组中的元素

    1.4K30

    跟着大彬读源码 - Redis 10 - 对象编码之整数集合

    2 升级操作 每当我们要将一个新元素添加到整数集合时,如果新元素的类型比整数集合的 encoding 类型大,整数集合就需要先进行升级操作(upgrade),然后才能将新元素添加到整数集合中。...将底层数组现有的所有元素,都转换成与新元素相同的类型,并将转换后的元素放在正确的位置上,保证原有顺序不发生改变。 将新元素添加到底层数组中。...新元素就会被放在底层数组的最开头的位置,即索引为 0 的位置; 在新元素大于所有现有元素时,新元素就会被放在底层数组的最末尾的位置; 3 升级优势 整数集合的升级策略主要有以下两个好处: 提示整数集合的灵活性...但是,因为有了升级操作,整数集合可以通过它来自适应新元素,所以我们可以随意地将 int16_t、int32_t、和 int64_t 类型的整数添加到集合中,而不必担心出现类型错误,大大的提升了整数集合的灵活性...5 总结 整数集合是集合键的底层实现之一。 整数集合以有序、无重复的方式保存集合元素。在有需要时,会根据新添加元素的类型,改变底层数组的类型。 升级操作提升了操作的灵活性,并尽可能的节约了内存。

    58420

    Java 集合框架体系总览

    例如,存储元素的顺序是 11、22、33,那么我们从 List 中取出这些元素的时候也会按照 11、22、33 这个顺序。...接口而且还增加了一些根据元素索引来操作集合的特有方法: public void add(int index, E element); // 将指定的元素,添加到该集合中的指定位置上 public E...❝至于为什么要定义一个方法签名完全相同的接口,我的理解是为了让集合框架的结构更加清晰,将单列集合从以下两点区分开来: 可以添加重复元素(List)和不可以添加重复元素(Set) 可以通过整数索引访问(...JDK1.8 以后在解决哈希冲突时有了较大的变化,当链表长度大于阈值(默认为 8)时,将链表转化为红黑树,以减少搜索时间(注意:将链表转换成红黑树前会判断,如果当前数组的长度小于 64,那么会选择先进行数组扩容...遍历包含键值对 (Entry) 对象的 Set 集合,得到每一个键值对 (Entry) 对象。 获取每个 Entry 对象中的键与值。

    1.5K21

    4、Redis数据结构——整数集合-intset

    [];//保存元素的数组 } intset; contents数组是整数集合的底层实现:整数集合的每个元素都是contents数组的一个数组项,各个项在数组中按值的大小从小到大有序地排列,并且数组中不包含任何重复项...、INTSET_ENC_INT64】 2、升级 每当我们要讲一个新元素添加到整数集合里面,并且新元素的类型比整数集合现有元素类型长时,整数集合都需要先进行升级(upgrade),然后才能将新元素添加到整数集合里面...2 、将底层数组现有的所有元素都转换成与新元素相同的类型,并将类型转换后的元素继续放置到正确的位上,而且在放置元素的过程中,需要继续维持底层数组的有序性质不变。...3、 将新元素添加到底层数组里面 2.1、升级好处 整数集合的升级策略有两个好处,一个是提升整数集合的灵活性,另一个是尽可能地节约内存。...重点回顾: 整数集合是集合键的底层实现之一 整数集合的底层实现为数组,数组以有序、无重复方式保存集合元素,在有需要时,会根据新添加元素的类型,改变这个数组的类型 升级带来了灵活性并且尽可能节约内存 只支持升级

    53600

    Numpy和pandas的使用技巧

    '' '''2、np.cumsum()返回一个数组,将像sum()这样的每个元素相加,放到相应位置''' '''NumPy数组实际上被称为ndarray NumPy最重要的一个特点是N维数组对象...可以在创建数组的时候np.array(ndmin=)设置最小维度 ndarray.shape 数组的维度,对于矩阵,n行m列,不改变原序列 ndarray.size 数组元素总个数...,相当于shape中n*m的值,改变原序列 ndarray.itemsize,数组每个元素大小,以字节为单位 ndarray.dtype 数组元素类型 ndarray.nbytes..., n.vsplit()垂直分割 数组元素的增删: n.resize()、n.append()添加到末尾、n.insert()、n.delete()、n.unique()查找唯一元素...:点到选中的行Ctrl+Shift+- #将代码块合并:使用Shift选中需要合并的框,Shift+m #在代码块前增加新代码块,按a;在代码块后增加新代码块,按b; #删除代码块,按dd #运行当前代码块

    3.5K30

    NumPy知识速记

    高效处理大数组的数据的原因: NumPy是在一个连续的内存块中存储数据,独立于其他Python内置对象。NumPy的C语言编写的算法库可以操作内存,而不必进行类型检查或其它前期工作。...布尔型索引选取数组中的数据,将总是创建数据的副本,即使返回一模一样的数组也是如此。 花式索引 花式索引(Fancy indexing)是一个NumPy术语,它指的是利用整数数组进行索引。...arr.T 在进行矩阵计算时,经常需要用到该操作,比如利用 np.dot 计算矩阵内积:np.dot(arr.T, arr) transpose 需要得到一个由轴编号组成的元组才能对这些轴进行转置...) 快速的元素级数组函数 通用函数(即ufunc)是一种对ndarray中的数据执行元素级运算的函数。...np.unique :返回数组中的唯一值以及已排序的结果 np.in1d :测试一个数组中的值在另一个数组中的成员资格(是否存在),返回一个布尔型数组 常用集合函数 用于数组的文件输入输出

    1.1K10

    16. 你能谈谈HashMap怎样解决hash冲突吗

    当程序执行 map.put(String,Obect)方法 时,系统将调用String的 hashCode() 方法得到其 hashCode 值——每个 Java 对象都有 hashCode() 方法,...接下来,我们分析下为什么哈希表的容量一定要是2的整数次幂。...取2的整数次幂,是为了使不同hash值发生碰撞的概率较小,这样就能使元素在哈希表中均匀地散列。...而当数组长度为16时,即为2的n次方时,2n-1得到的二进制数的每个位上的值都为1,这使得在低位上&时,得到的和原hash的低位相同,加之hash(int h)方法对key的hashCode的进一步优化...* loadFactor);//重新计算临界值 } 新建了一个HashMap的底层数组,上面代码中第10行为调用transfer方法,将HashMap的全部元素添加到新的HashMap中,并重新计算元素在新的数组中的索引位置

    12610

    一道算术题:ArrayDeque + ArrayList = LinkedList

    用均摊分析法: 1、对于一个大小为 K 的空数组,在前 K - 1 次入栈操作中,时间复杂度都是 O(1); 2、在第 K 次入栈中,由于数组容量不足,所以我们将数组扩大为 2K,并且搬运 K 个数据...,时间复杂度退化为 O(K); 3、对于一个大小为 2K 的数组,在接下来的 K - 1 次入栈操作中,时间复杂度都是 O(1); 4、在第 2K 次入栈中,由于数组容量不足,所以我们将数组扩大为 4K...在循环数组中需要使用取余运算计算游标指针循环后的位置,例如 (tail + 1) % size,而如果数组的尺寸 size 是 2 的整数幂,那么就可以将取余运算替换为位运算,例如 (tail + 1)...2 的整数幂) 4.3 ArrayDeque 的添加和扩容方法 ArrayDeque 可以在数组的两端添加元素,不支持在数组的中间添加元素: 在队头添加: 在 head 指针的上一个位置赋值,如果数组越界则循环到数组尾部...总结 1、ArrayDeque 是基于动态数组的线性表,具备 Queue 和 Stack 的行为,但不具备 List 的行为; 2、ArrayDeque 的数组容量是 2 的整数幂,在扩容时容量会翻倍,

    50320

    HashMap的实现原理及hash冲突(碰撞)解决方法

    当程序执行 map.put(String,Obect)方法 时,系统将调用String的 hashCode() 方法得到其 hashCode 值——每个 Java 对象都有 hashCode() 方法,...得到这个对象的 hashCode 值之后,系统会根据该 hashCode 值来决定该元素的存储位置。...接下来,我们分析下为什么哈希表的容量一定要是2的整数次幂。...取2的整数次幂,是为了使不同hash值发生碰撞的概率较小,这样就能使元素在哈希表中均匀地散列。   ...而当数组长度为16时,即为2的n次方时,2n-1得到的二进制数的每个位上的值都为1,这使得在低位上&时,得到的和原hash的低位相同,加之hash(int h)方法对key的hashCode的进一步优化

    82220
    领券