一、数据维度

  一个数据表达一个含义,一组数据表达一个或多个含义。

  数据维度概念:一组数据的组织形式,其中有一维数据、二维数据、多维数据、高维数据。

  1、  一维数据

  一维数据由对等关系的有序或无序数据构成,采用线性方式组织。

  对应:列表、集合

#列表有序
[1,2,3,4,5]
#集合无序
{1,2,3,4,5}

  2、二维数据

  二维数据由多个一维数据构成,是一维数据的组合形式。

  对应:列表

[[1,2,3],[4,5,6]]

  3、多维数据

  多维数据由一维或二维数据在新维度上扩展形成。

  对应:列表

[[[1],[2],[3]],[[4],[5],[6]],[[7],[8],[9]]]

  4、高维数据

  高维数据仅使用最基本二元关系展示数据间的复杂结构。

  对应:字典或数据表示格式

#字典一一对应为二元关系
dict={
"x1":"",
"y1":"",
}

  数据表示格式:JSON、XML、YAML等格式

二、NumPy

  1、简介

  NumPy是一个开源的科学计算基础库,是SciPy、Pandas等数据处理或科学计算库的基础。

  2、主要功能:

  (1)、提供了一个强大的N维数组对象ndarray

    优点:

    1、数组对象可以去掉元素间运算所需的循环,使一维向量更像单个数据。

    2、设置专门的数组对象,经过优化可以提升这类应用的运算速度。

    3、数组对象采用相同的数据类型,有助于节省运算和存储空间。

    实例:

import numpy as np
a=np.array([1,2,3,4,5])
b=np.array([6,7,8,9,10])
c=[]
c=a**2+b**2
print(c)

    

  (2)、提供了一组广播功能相关的函数,用来在数据间进行计算;

  (3)、整合了C/C++/Fortran代码,并提供整合工具;

  (4)、提供了线性代数、傅里叶变换、随机数生成等功能用于科学计算。

三、ndarray:

  多维数组,由实际数据和描述这些数据的元数据(数据维度、数据类型)两部分构成。

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

  np.array()可以生成一个ndarray数组,输出成[]形式,元素由空格分割。

  两个属性:

  轴(axis):保存数据维度;秩(rank):轴的数量  

  ndarray对象的属性:

  1、ndim:秩,轴数量或维度数量

import numpy as np
a=np.array([[1,2,3,4,5],[6,7,8,9,10]])
print(a.ndim)

  

  、shape:ndarray对象尺度,即n行m列

import numpy as np
a=np.array([[1,2,3,4,5],[6,7,8,9,10]])
print(a.shape)

  

  3、size:ndarray对象元素个数,为shape中n*m

import numpy as np
a=np.array([[1,2,3,4,5],[6,7,8,9,10]])
print(a.size)

  

  4、dtype:ndarray对象的元素的类型

import numpy as np
a=np.array([[1,2,3,4,5],[6,7,8,9,10]])
print(a.dtype)

  

  5、itemsize:ndarray对象中每个元素大小

import numpy as np
a=np.array([[1,2,3,4,5],[6,7,8,9,10]])
print(a.itemsize)

  

四、ndarray的相关操作

1、创建:

  (1)、从Python中的列表、元组等

import numpy as np
#不声明数据类型,创建时会自动读取类型
nd=np.array(list/tuple)
import numpy as np
#声明数据类型
nd=np.array(list/tuple,dtype=np.int32)

  (2)、使用NumPy中函数

函数 说明
arange(n) 返回ndarray类型,元素从0到n-1
ones(shape) 根据shape生成一个全1数组
zeros(shape) 根据shape生成全0数组
full(shape,value) 根据shape生成一个数组,每元素值全为value
eye(n) 一个正方形的n*n单位矩阵,对角线为1,其余为0
ones_like(a) 根据数组a的形状生成一个全1数组
zeros_like(a) 根据数组a的形状生成一个全0数组
full_like(a,value) 根据数组a的形状生成一个数组,每元素值全为value
linspace() 根据起止数据等间距地填充数据,形成数组
concatenate() 根据两个或多个数组合并成一个新数组
 
  arange函数默认是整数类型,其他函数默认为float类型,np.ones((1,2),dtype=np.int32)将ones生成的数组类型为int32。
  举例:
 
  【2,20】linspace前闭合后闭合等分:
import numpy as np
nd=np.linspace(2,20,10)
print(nd)
  

  

  添加endpoint=Flase,【2,20)linspace前闭合后开放等分:

import numpy as np
nd=np.linspace(2,20,10,endpoint=False)
print(nd)

  

  concatenate合并:

import numpy as np
nd=np.linspace(2,20,10)
nd2=np.linspace(2,10,3)
nd3=np.concatenate((nd,nd2))
print(nd3)

  

  (3)、从字节流中

  (4)、从文件中读取特定格式

2、变换

  (1)、维度变换

  reshape(不改变原数组)

import numpy as np
nd=np.full((2,4,8),6)
a=nd.reshape((8,8))
print(a)
print()
print(nd)

  

  resize(改变原数组)

import numpy as np
nd=np.full((2,4,8),6)
print(nd)
print()
nd.resize((8,8))
print(nd)

  

  (2)、元素类型变换

  astype(返回一个新数组)

import numpy as np
nd=np.full((2,4,8),6,dtype=int)
print(nd)
nd2=nd.astype(np.float)
print()
print(nd2)

  

  (3)、ndarray数组转化成列表

  tolist()

import numpy as np
nd=np.full((2,4,2),1)
print(nd)
nd2=nd.tolist()
print()
print(nd2)

  

3、索引

  获取数组中特定位置元素的过程。

  一维:和python列表的索引方式相同

  多维:nd[x,y,z]

import numpy as np
nd=np.arange(18).reshape((2,3,3))
print(nd)
print("索引的元素为:"+str(nd[1,2,2]))

  

4、切片

  获取数组元素子集的过程

  一维:和python列表的切片方式相同

  多维:

import numpy as np
nd=np.arange(18).reshape((2,3,3))
print(nd)
print("切出来的:")
print(nd[:,:,::2])

  

5、运算

  数组与标量间的计算则为数组中每个元素与标量的计算。

  示例:

import numpy as np
nd=np.arange(18).reshape((2,3,3))
print(nd)
nd=nd/2
print("运算结果:")
print(nd)

  

  函数如下:

函数  说明 

abs(n)

fabs(n)

计算数组各元素的绝对值 
 sqrt(n) 计算数组各元素的平方根 
 square(n) 计算数组各元素的平方 
 rint(n) 各元素四舍五入 
 modf(n) 各元素的整数和小数部分分成两个独立数组 
 cos(n) 三角函数 
 exp(n) 各元素指数值 
 sign(n) 各元素的符号值,正数显示+,负数显示-,0显示0 
 log(n) 计算各元素对数 

ceil(n)

floor(n)

计算各元素ceiling值或floor值 

Python开发:NumPy学习(一)ndarray数组的更多相关文章

  1. Python数据分析:Numpy学习笔记

    Numpy学习笔记 ndarray多维数组 创建 import numpy as np np.array([1,2,3,4]) np.array([1,2,3,4,],[5,6,7,8]) np.ze ...

  2. python开发【学习目录】:目录

    python开发[学习目录]:目录 Python开发:环境搭建(python3.PyCharm) Python开发[第一篇]:初识Python Python开发[第二篇]:Python基础知识 Pyt ...

  3. Python科学计算学习之高级数组(二)

    代码性能和向量化 背景:Python是一种解释型的编程语言,基本的python代码不需要任何中间编译过程来得到机器代码,而是直接执行.而对于C.C++等编译性语言就需要在执行代码前将其编译为机器指令. ...

  4. numpy学习之创建数组

    1.使用array函数创建数组 import numpy as np ndarray1 = np.array([1, 2, 3]) array([1, 2, 3]) ndarray2 = np.arr ...

  5. Python数据分析 | Numpy与1维数组操作

    作者:韩信子@ShowMeAI 教程地址:http://www.showmeai.tech/tutorials/33 本文地址:http://www.showmeai.tech/article-det ...

  6. 3.2Python数据处理篇之Numpy系列(二)--- ndarray数组的创建与变换

    目录 (一)ndarray数组的创建 1.从列表以元组中创建: 2.使用函数创建: (二)ndarray数组的变换 1.维度的变换: 2.类型的变换: 目录: 1.ndarray数组的创建 2.nda ...

  7. NumPy学习_01 ndarray相关概念

    1.NumPy库 NumPy = Numerical Python 是高性能科学计算和数据分析的基础库. pandas库充分借鉴了NumPy的相关概念,先行掌握NumPy库的用法,才能把pandas的 ...

  8. NumPy学习_00 ndarray的创建

    1.使用array()函数创建数组 参数可以为:单层或嵌套列表:嵌套元组或元组列表:元组或列表组成的列表 # 导入numpy库 import numpy as np # 由单层列表创建 a = np. ...

  9. NumPy学习_02 ndarray基本操作

    1.算术运算符 它们只用于位置相同的元素之间,即为元素级的运算. 所得到的运算结果组成一个新的数组. 不用编写循环即可对数据执行批量运算.(矢量化) import numpy as np # 创建一个 ...

  10. Numpy学习三:数组运算

    1.转置 #reshape(shape)函数改变数组形状,shape是一个元组,表示数组的形状 创建一个包含15个元素的一维数组,通过reshape函数调整数组形状为3行5列的二维数组arr = np ...

随机推荐

  1. spring.net的简单使用(一)入门

    Spring.net是一个非常强大的框架和工具,下面是百度百科对它的介绍. Spring.NET为建立企业级应用提供了一套轻量级的解决方案.通过Spring.NET,我们可以用统一且透明的方式来配置应 ...

  2. Nginx 部署 Ant Design pro

    利用Ant Design pro开发的项目,如何用Nginx部署呢? 第一步:把项目打包,打包命令如下: npm run build 运行完毕会在项目目录下生成dist文件夹. 第二步:想要测试打包好 ...

  3. 深入windows的关机消息截获-从XP到Win7的变化(在XP中程序可以阻止关机,但是在Win7中程序无法阻止关机,可Block的时间从1秒调到了5秒) good

    之前写了一个软件用于实验室的打卡提醒,其中一个重要的功能是在关机之前提醒当天晚上是否已经打卡.之前我是在WM_ENDSESSION中弹出一个模态对话框来提醒,在XP中基本工作正常,在Win7中大多数时 ...

  4. CEGUI 0.7.7 VS2010+SP3 编译过程

    1 在官方网站http://www.cegui.org.uk/ 下载最新的CEGUI 源代码 版本是0.7.7 2 下载编译需要用到的依赖文件包 将解压后的文件夹 Dependencies 和CEGU ...

  5. admin组件的使用

    导进来的模板不能直接放到static里,要从其他的地方移动到static里,否则pycharm不能自动改变路径2.自关联class Userunfo(models.Model):    title=m ...

  6. centos安装最新版MySQL 8.0教程

    这篇教程是通过yum方式安装的 安装依赖 yum install libaio wget -y 检查MYSQL是否已安装 yum list installed | grep mysql 如果有先卸载 ...

  7. Spring Cloud Stream整合RabbitMQ

    简介 Spring Cloud Stream是一个构建消息驱动微服务的框架,应用程序通过input(相当于consumer).output(相当于producer)来与Spring Cloud Str ...

  8. 记一次腾讯IEG面试失败经历

    如果这是一次成功的经历,估计浏览量不会低.无奈本人能力有限,而且一直在实习,准备时间与面试经验有限导致此次失败,不过,失败也是一种宝贵的经验,我希望也相信这里能给大家一些比较珍贵的经验,废话不多说,上 ...

  9. spring 5.x 系列第9篇 —— 整合mongodb (xml配置方式)

    源码Gitub地址:https://github.com/heibaiying/spring-samples-for-all 一.说明 1.1 项目结构说明 配置文件位于resources下,项目以单 ...

  10. Spark2.4.0源码——DAGScheduler

    前言 Spark会将用户提交的作业看作一个job,在提交的时候首先将job转换为一系列的RDD,并按照RDD之间的依赖关系构建DAG(有向无环图),DAGScheduler会按照RDD依赖的不同将DA ...