Python开发:NumPy学习(一)ndarray数组
一、数据维度
一个数据表达一个含义,一组数据表达一个或多个含义。
数据维度概念:一组数据的组织形式,其中有一维数据、二维数据、多维数据、高维数据。
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() | 根据两个或多个数组合并成一个新数组 | 
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数组的更多相关文章
- 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 ...
 - python开发【学习目录】:目录
		
python开发[学习目录]:目录 Python开发:环境搭建(python3.PyCharm) Python开发[第一篇]:初识Python Python开发[第二篇]:Python基础知识 Pyt ...
 - Python科学计算学习之高级数组(二)
		
代码性能和向量化 背景:Python是一种解释型的编程语言,基本的python代码不需要任何中间编译过程来得到机器代码,而是直接执行.而对于C.C++等编译性语言就需要在执行代码前将其编译为机器指令. ...
 - numpy学习之创建数组
		
1.使用array函数创建数组 import numpy as np ndarray1 = np.array([1, 2, 3]) array([1, 2, 3]) ndarray2 = np.arr ...
 - Python数据分析 | Numpy与1维数组操作
		
作者:韩信子@ShowMeAI 教程地址:http://www.showmeai.tech/tutorials/33 本文地址:http://www.showmeai.tech/article-det ...
 - 3.2Python数据处理篇之Numpy系列(二)--- ndarray数组的创建与变换
		
目录 (一)ndarray数组的创建 1.从列表以元组中创建: 2.使用函数创建: (二)ndarray数组的变换 1.维度的变换: 2.类型的变换: 目录: 1.ndarray数组的创建 2.nda ...
 - NumPy学习_01 ndarray相关概念
		
1.NumPy库 NumPy = Numerical Python 是高性能科学计算和数据分析的基础库. pandas库充分借鉴了NumPy的相关概念,先行掌握NumPy库的用法,才能把pandas的 ...
 - NumPy学习_00 ndarray的创建
		
1.使用array()函数创建数组 参数可以为:单层或嵌套列表:嵌套元组或元组列表:元组或列表组成的列表 # 导入numpy库 import numpy as np # 由单层列表创建 a = np. ...
 - NumPy学习_02 ndarray基本操作
		
1.算术运算符 它们只用于位置相同的元素之间,即为元素级的运算. 所得到的运算结果组成一个新的数组. 不用编写循环即可对数据执行批量运算.(矢量化) import numpy as np # 创建一个 ...
 - Numpy学习三:数组运算
		
1.转置 #reshape(shape)函数改变数组形状,shape是一个元组,表示数组的形状 创建一个包含15个元素的一维数组,通过reshape函数调整数组形状为3行5列的二维数组arr = np ...
 
随机推荐
- Delphi使用android的NDK是通过JNI接口,封装好了,不用自己写本地代码,直接调用
			
一.Android平台编程方式: 1.基于Android SDK进行开发的第三方应用都必须使用Java语言(Android的SDK基于Java实现) 2.自从ndk r5发布以后, ...
 - C++迭代器 iterator
			
1. 迭代器(iterator)是一中检查容器内元素并遍历元素的数据类型.(1) 每种容器类型都定义了自己的迭代器类型,如vector:vector<int>::iterator iter ...
 - CPU的最小执行单位是线程,协程不需要qt支持...直接用现成的协程库就行了
			
协程也就在I/O操作上才有优势,Qt事件循环,本事很多I/O已经是异步了,利用好异步(虽然都说异步有点反人类思维).因为CPU的执行最小单位是线程,协程也只是在其之上又调度而已. 我的意思是利用好异步 ...
 - VS使用的快捷方式
			
VS常用快捷键 1.回到上一个光标位置/前进到下一个光标位置 1)回到上一个光标位置:使用组合键“Ctrl + -”: 2)前进到下一个光标位置:“Ctrl + Shift + - ”. 2.复制/剪 ...
 - Codility---Nesting
			
Task description A string S consisting of N characters is called properly nested if: S is empty; S h ...
 - Codility--- Distinct
			
Task description Write a function class Solution { public int solution(int[] A); } that, given a zer ...
 - es6基本语法,vue基本语法
			
一.es6基本语法 0.es6参考网站 http://es6.ruanyifeng.com/#README 1.let 和 const (1)const特点: 只在局部作用域起作用 不存在变量提升 不 ...
 - SYN2136型  北斗NTP网络时间服务器
			
SYN2136型 北斗NTP网络时间服务器 北斗NTP网络时间服务器时间服务器使用说明视频链接: http://www.syn029.com/h-pd-109-0_310_36_-1.html 请将 ...
 - 第二章 python如何运行程序
			
一.python解释器介绍 Python解释器是一种让程序运行起来的程序.实际上,解释器是代码与机器的计算机硬件之间的软件逻辑层.当Python包安装在机器上后,它包含了一些最小化的组件:一个解释器和 ...
 - python算法与数据结构-栈(43)
			
一.栈的介绍 栈作为一种数据结构,是一种只能在一端进行插入和删除操作.它按照先进后出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读 ...