Python数据分析与展示--NumPy数据分析

本文介绍了如何使用NumPy进行数据的一维到多维表示,重点讲解了列表与数组的区别,以及ndarray对象的创建、维度变换、类型转换和基本运算。通过实例展示了数组在科学计算中的优势,包括数组运算速度和内存效率。
摘要由CSDN通过智能技术生成

NumPy数据分析

学习视频:Python数据分析与展示_北京理工大学_哔哩哔哩_bilibili  P4-P10

数据的维度

  • 一维数据:由对等关系的有序或无序数据构成,采用线性方式组织。例如列表和数组,这两者的区别是:列表的数据类型可以不同,数组的数据类型必须相同。
  • 二维数据:由多个一维数据构成,是一维数据的组合形式。例如表格是典型的二维数据。
  • 多维数据:由一维或二维数据在新维度上扩展形成
  • 高维数据:仅利用最基本的二元关系展示数据间的复杂结构。例如json、yaml格式的数据

数据维度的Python表示

#一维数据:列表和集合类型
[1,2,3] #有序
{1,2,3} #无序

#二维数据:列表类型
[[1,2,3],
 [4,5,6]]

#多维数据
[[[1,2,3],
  [4,5,6]],
 [7,8,9],
 [4,4,4]]

#高维数据:字典类型或数据表示格式,例如JSON、XML、YAML
dict={
        'firstName':'Tian',
        'lastName':'Song',
    }

NumPy的多维数组对象:ndarray

NumPy是一个开源的python科学计算基础库,包含

  • 一个强大的N维数组对象:ndarray
  • 广播功能函数
  • 整合C/C++/Fortran代码的工具
  • 线性代数,傅里叶变换、随机数生成等功能

NumPy是SciPy、Pandas等数据处理或科学计算库的基础

NumPy的引用:

import numpy as np

#这是一种约定俗成的引用名称,建议使用上述约定的别名

 python已经有列表类型,为什么需要一个数组对象?

  • 数组对象可以去除元素运算所需的循环,使一维向量更像单个数据
  • 设置专门的数组对象,经过优化,可以提升这类应用的运算速度
  • 数组对象采用相同的数据类型,有助于节省运算和存储空间

例:

#计算A^2+B^2,其中A和B是一维数组
import numpy as np
#使用列表的方式
def pySum():
    a=[0,1,2,3,4]
    b=[5,6,7,8,9]
    c=[]
    for i in range(len(a)):
        c.append(a[i]**2+b[i]**2)
    return c
print("pySum-->",pySum())

#使用数组的方式
def npSum():
    a=np.array([0,1,2,3,4])
    b=np.array([5,6,7,8,9])
    c=a**2+b**2
    return c
print("npSum-->",npSum())

#运行结果
'''
pySum--> [25, 37, 53, 73, 97]
npSum--> [25 37 53 73 97]
'''
#可见如果采用数组的方式,numy把一维向量当作单个数据对待,这样更有利于进行科学计算

 ndarray对象的构成:

ndarry实例:

  • 实际的数组
  • 描述这些数据的元数据(数据维度、数据类型等)

ndarray数组一般要求所有元素类型相同(同质),数组下标从0开始

ndarry实例:

import numpy as np

#ndarray在程序中的别名是:array
#np.array()生成一个ndarray数组
a=np.array([[0,1,2,3,4],
            [5,6,7,8,9]])

print(a)    #np.array()输出成[]形式,元素有空格分割

'''
[[0 1 2 3 4]
 [5 6 7 8 9]]
'''
#轴(axis):保存数据的维度;秩(rank):轴的数量

ndarray对象的属性

  • .ndim:秩,即轴的数量或维度的数量
  • .shape:ndarray对象的尺度,对于矩阵的n行m列
  • .size:ndarray对象元素的个数,相当于.shape中的n*m的值
  • .dtype:ndarray对象的元素类型
  • .itemsize:ndarray对象中每个元素的大小,以字节为单位

 实例:

import numpy as np

a=np.array([[1,2,3,4],
            [5,6,7,8]])

print("维度:",a.ndim)
print("尺度:",a.shape)
print("元素个数:",a.size)
print("元素的类型:",a.dtype)
print("元素的大小:",a.itemsize)

'''
维度: 2
尺度: (2, 4)
元素个数: 8
元素的类型: int32
元素的大小: 4
'''

ndarray的元素类型

非同质的ndarray对象

非同质的ndarray元素为对象类型,无法有效发挥NumPy优势,尽量避免使用

import numpy as np

a=np.array([[1,2,3,4],
            [5,6,7]])

print("尺度:",a.shape)
print("元素个数:",a.size)
print("元素的类型:",a.dtype)
print("元素的大小:",a.itemsize)

'''
尺度: (2,)
元素个数: 2
元素的类型: object
元素的大小: 8
'''
#此时每个一维向量被当成一个对象(元素)

ndarray数组的创建

从python中的列表、元组等类型创建ndarray数组

x=np.array(list/tuple,dtype=np.float32)

#当np.array()不指定dtype时,NumPy将根据情况关联一个dtype类型

例子:

使用NumPy中函数创建ndarray数组,如:arrange,ones,zeros

注:使用np.arange()方法创建的数组默认是int32类型,另外几种方法默认是float类型

例子:

例子:

例子:

ndarray数组的变换

ndarray数组的维度变换

例子:

ndarray数组的类型变换

new_a = a.astype(new_type)

#astype()方法一定会创建新的数组()原始数组的一个拷贝,即使两个类型一致

例子:

ndarray数组向列表的转换

ls=a.tolist()

例子:

ndarray数组的操作

ndarray数组的索引和切片

一维数组的索引和切片:与python的列表类似

多维数组的索引:

多维数组的切片:

ndarray数组的运算

数组与标量之间的运算作用于数组的每一个元素

NumPy一元函数

例子:

NumPy二元函数

 

例子:

 转载于:python数据分析与展示(一) - 元骑鲸 - 博客园

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值