首页 > 其他分享 >数据处理与统计分析——01-Numpy的属性&ndarray数组创建

数据处理与统计分析——01-Numpy的属性&ndarray数组创建

时间:2024-11-06 20:45:32浏览次数:3  
标签:arr 01 dtype print 数组 np Numpy ndarray

Numpy的属性

  • Numpy简介

    • NumPy(Numerical Python)是Python数据分析必不可少的第三方库
    • NumPy的出现一定程度上解决了Python运算性能不佳的问题,同时提供了更加精确的数据类型,使其具备了构造复杂数据类型的能力。
    • 本身是由C语言开发,是个很基础的扩展,NumPy被Python其它科学计算包作为基础包,因此理解np的数据类型对python数据分析十分重要。
    • NumPy重在数值计算,主要用于多维数组(矩阵)处理的库。用来存储和处理大型矩阵,比Python自身的嵌套列表结构要高效的多
  • 重要功能如下

    1. 高性能科学计算和数据分析的基础包
    2. ndarray,多维数组,具有矢量运算能力,快速、节省空间
    3. 矩阵运算,无需循环,可完成类似Matlab中的矢量运算
    4. 用于读写磁盘数据的工具以及用于操作内存映射文件的工具
  • Numpy的属性

    NumPy的数组类被称作ndarray,通常被称作数组。

    • ndarray.ndim

    • ndarray.shape

    • ndarray.reshape()

    • ndarray.size

    • ndarray.dtype

    • ndarray.itemsize()

    • ndarray.vstack() : 按垂直方向(行顺序) 堆叠数组构成一个新的数组, 堆叠的数据需要具有相同的维度

    • ndarray.hstack() : 按水平方向(列顺序) 堆叠数组构成一个新的数组, 堆叠的数据需要具有相同的维度

      数组的维度。这是一个指示数组在每个维度上大小的整数元组。例如一个n排 m列的矩阵,它的shape属性将是(2,3),这个元组的长度显然是秩,即维度或者ndim属性。

  • 代码演示

    # numpy属性介绍:  shape, dtype, ndim, itemsize, size
    
    # 导包
    import numpy as np
    
    # 1. 创建numpy的数组.   
    # arange(15)       等价于python的 range(15), 即: 获取 0 ~ 14的整数
    
    # reshape(3, 5)    把上述数据封装到 3个一维数组中, 每个一维数组的长度为: 5,  然后把三个一维数组封装成1个 二维数组.	若参数为 负数, 表示模糊控制, 可以传入任何负数, (-1, 5)表示, 固定五列, (3, -1)表示固定三行, 其余自动计算, 若无法 整除, 则报错
    
    
    arr = np.arange(15).reshape(3, 5)
    
    # 2. 打印数组, 查看内容
    print(arr)
    
    # 3. 演示numpy的 属性
    print(f'数组的维度: {arr.shape}')         # (3, 5)   几行几列
    print(f'数组轴的个数: {arr.ndim}')        # 几维数组, 轴就是几,  2  
    print(f'数组元素类型: {arr.dtype}')       # int64 
    print(f'数组每个元素的占用字节数: {arr.itemsize}')    # 8
    print(f'数组元素个数: {arr.size}')        # 15 
    print(f'数组类型: {type(arr)}')          # <class 'numpy.ndarray'>
    
    # 4. 上述的 shape, ndim, size属性 可以 函数写法 实现.
    # 格式: np.函数名(数组)
    print(f'数组的维度: {np.shape(arr)}')         # (3, 5)   3个元素(一维数组), 每个元素(一维数组)又有5个元素(值)
    print(f'数组轴的个数: {np.ndim(arr)}')        # 几维数组, 轴就是几,  2  
    print(f'数组元素个数: {np.size(arr)}')        # 15 
    print(f'数组类型: {type(arr)}')              # <class 'numpy.ndarray'>
    

Numpy的ndarry创建

  • ndarray介绍

    • NumPy数组是一个多维的数组对象(矩阵),称为ndarray(N-Dimensional Array)
    • 具有矢量算术运算能力和复杂的广播能力,并具有执行速度快和节省空间的特点
    • 注意:ndarray的下标从0开始,且数组里的所有元素必须是相同类型。
  • 数组形式

    import numpy as np 
    a = np.array([2, 3, 4])
    print('数组a元素类型: ', a)
    print('数组a类型:', a.dtype)
    
    b = np.array([1.2, 3.5, 5.1])
    print('数组b类型:', b.dtype)
    
  • zeros() /ones()/empty()

    函数zeros创建一个全是0的数组,

    函数ones创建一个全1的数组,

    函数empty创建一个内容随机并且依赖于内存状态的数组。默认创建的数组类型(dtype)都是float64

    zero1 = np.zeros((3, 4))    # 3个一维数组, 每个长度为: 4
    print('数组zero1: ', zero1)
    
    ones1 = np.ones((2, 3, 4))  # 2个二维数组, 每个二维数组有3个一维数组, 每个一维数组有4个元素1, 整体放入1个数组中
    print('数组one1: ', ones1)
    
    empty1 = np.empty((2, 3))
    print('数组empty1: ', empty1)
    
    print(zero1.dtype, ones1.dtype, empty1.dtype)
    
  • arange(), 类似 python 的 range() ,创建一个一维 ndarray 数组。

    np_arange = np.arange(10, 20, 5,dtype=int)   # 起始, 结束, 步长, 类型
    print("arange创建np_arange:", np_arange)
    print("arange创建np_arange的元素类型:", np_arange.dtype)
    print("arange创建np_arange的类型:", type(np_arange))
    
  • matrix(), 是 ndarray 的子类,只能生成 2 维的矩阵

    x1 = np.mat("1 2;3 4")
    print(x1)
    x2 = np.matrix("1,2;3,4")
    print(x2)
    x3 = np.matrix([[1, 2, 3, 4], [5, 6, 7, 8]])
    print(x3)
    
  • 创建随机数矩阵

    import numpy as np
    
    # 生成指定维度大小(3行4列)的 随机多维 浮点型数据(二维), rand 固定 区间0.0 ~ 1.0
    arr = np.random.rand(3, 4)
    print(arr)
    print(type(arr))
    
    # 生成指定维度大小(3行4列)的 随机多维 整型数据(二维), randint()可指定区间(-1, 5)
    arr = np.random.randint(-1, 5, size=(3, 4))
    print(arr)
    print(type(arr))
    
    #生成指定维度大小(3行4列)的 随机多维 浮点型数据(二维), uniform()可以指定区间(-1, 5)产生-1到5之间均匀分布的样本值
    arr = np.random.uniform(-1, 5, size=(3, 4))
    print(arr)
    print(type(arr))
    
  • ndarray的数据类型

    1. dtype参数,指定数组的数据类型,类型名+位数,如float64, int32
    2. astype方法,转换数组的数据类型
    
    # 初始化3行4列数组,数据类型为f1oat64
    zeros_float_arr =np.zeros((3,4),dtype=np.float64)
    print(zeros_float_arr)
    print(zeros_float_arr.dtype) # float64
    
    # astype转换数据类型,将已有的数组的数据类型转换为int32
    zeros_int_arr = zeros_float_arr.astype(np.int32)
    print(zeros_int_arr)
    print(zeros_int_arr.dtype) #int32
    
  • 等比数列

    # np.logspace 等比数列, logspace中,开始点和结束点是10的幂
    # 我们让开始点为0,结束点为0,元素个数为10,看看输出结果。
    
    a = np.logspace(0,0,10)
    
    # 输出结果
    # a
    
    # 假如,我们想要改变基数,不让它以10为底数,我们可以改变base参数,将其设置为2
    a = mp.logspace(0, 9, 10, base=2)
    a
    # 输出结果
    # array([1., 2., 4., 8., 16., 32., 64., 128., 256., 512.])
    
  • 等差数列

    # np.linspace等差数列, 包左包右
    # np.linspace是用于创建一个一维数组,并且是等差数列构成的一维数组,它最常用的有三个参数。
    # 第一个例子,用到三个参数,第一个参数表示起始点,第二个参数表示终止点,第三个参数表示数列的个数。
    
    a = np.linespace(1, 10, 10)
    a
    # 输出结果
    # array([1., 2., 3., 4., 5., 6., 7., 8., 9., 10.])
    
    # np.linespace 创建的数组元素时浮点型
    a.dtype		# dtype('float64')
    
    # 可以使用参数 endpoint决定是否包含 终止值, 默认为True
    a = np.linespace(1, 10, 10, endpoint=False)
    a
    

标签:arr,01,dtype,print,数组,np,Numpy,ndarray
From: https://blog.csdn.net/m0_74893204/article/details/143579623

相关文章

  • 校园资讯平台微信小程序(30143)
     有需要的同学,源代码和配套文档领取,加文章最下方的名片哦一、项目演示项目演示视频1项目演示视频2二、资料介绍完整源代码(前后端源代码+SQL脚本)配套文档(LW+PPT+开题报告)远程调试控屏包运行三、技术介绍Java语言SSM框架SpringBoot框架Vue框架JSP页面Mysql数据库IDEA/Ecl......
  • CF1270 Good Bye 2019
    Dashboard玩构造玩的,服了。A拥有最大牌的必胜。linkB若相邻的差\(\ge2\)则有解,否则根据变化连续性一定无解。linkC加两个数,第一个数为之前所有数的异或和。加进来之后异或为0。第二个数为加完第一个数之后的和。linkD考虑\(k=n-1\)时,分别询问除去每个数之后的第\(......
  • AI预测福彩3D采取888=3策略+和值012路+胆码+通杀1码预测11月6日新模型预测第132弹
             经过100多期的测试,当然有很多彩友也一直在观察我每天发的预测结果,得到了一个非常有价值的信息,那就是9码定位的命中率非常高,100多期一共只错了12次,这给喜欢打私房菜的朋友提供了极高价值的预测结果~当然了,大部分菜友还是走的正常渠道,因此,得想办法进行缩水,尽......
  • AI预测体彩排3采取888=3策略+和值012路+胆码+通杀1码测试11月6日升级新模型预测第126
             经过100多期的测试,当然有很多彩友也一直在观察我每天发的预测结果,得到了一个非常有价值的信息,那就是9码定位的命中率非常高,已到达90%的命中率,这给喜欢打私菜的朋友提供了极高价值的预测结果~当然了,大部分菜友还是走的正常渠道,因此,得想办法进行缩水,尽可能少的......
  • CF2001 题解
    A给定循环数组,每次操作时,设当前大小为m。选择$i\in[0,m)$,若满足$a_i\lea_{i+1\bmodm}$,则可删除$a_i,a_{i+1\bmodm}$中的任意一个。求最小的操作次数,使得数组中所有元素都相等。$n\le100$操作非常强,除了两个相邻位置相等的情况,可以删除任意元素。然而所有位置都......
  • WC2010 重建计划
    谨以此纪念这个废物逝去的一天。别看它是一道黑题但是它不配。首先它长得很像分数规划,直接二分答案,这样就把每条边的边权看成了\(V(e)-\text{mid}\),然后你希望求经过边数在\([L,U]\)之间的最长路径,判断它是否\(\ge0\)。考虑一个暴力\(dp_{i,j}\)表示\(i\)作为链顶,其子......
  • 树洞01
    我今天看了个知乎评论说码农三十岁干不到两万就摆摊,那我觉得我活的真失败我活的本应很幸福,却因为不是人上人而倍感压力,我不想赢只怕输我父母嘴上说着希望我好好的,其实还是希望我有的是钱,出国,买房,结婚,生子,还得同步进行。你们这帮人贪得无厌就好像人必须得贷款买房子有北上户口!必......
  • AWS - [01]
    题记部分 一、概述  AWS,全称AmazonWebServices,是亚马逊公司旗下的云计算服务平台,自2006年起向全球用户提供广泛而深入的云计算服务。AWD是全球最全面、应用最广泛的云平台之一,它从全球的数据中心提供超过200项功能齐全的服务,旨在帮助各种规模的企业、政府机构和非盈利组......
  • LOJ6118 「2017 山东二轮集训 Day7」鬼牌
    题意有\(n\)个球,\(m\)种颜色,\(i\)种颜色有\(a_i\)个球。每次随机选择两个球\(x\),\(y\)。使两个球的颜色都变为\(y\)的颜色。问最终只有一个颜色的球的期望步数。\(n\le10^9,m\le10^5\)。Sol显然的,考虑先枚举最终颜色,我们只关心当前有多少个最终颜色的球。......
  • 题解:P7082 [NWRRC2013] Dwarf Tower
    涉及知识点:动态规划。解题思路设\(dp_i\)为得到\(i\)最小的花费。可以得到转移方程:\(dp_{a_i}=\min(dp_{x_i}+dp_{y_i},dp_{a_i})\)。很明显最多迭代\(n\)次,还需要再外面套一个循化即可。但是有些OJ没有洛谷跑得快,所以需要加一点优化。如果当前循环没有更新......