numpy使用教程之数组的创建与遍历

NumPy 是一个 Python 包。 它代表 “Numeric Python”。 它是一个由多维数组对象和用于处理数组的例程集合组成的库。

·常见的数据类型

  bool_ 一个字节的布尔值

 int_  默认的整数

int8  字节-128-127 ; int16,int32, int64  对应的整数

float_ float64的简写, float16  float32  float64

complex_  

·创建n维数组  numpy.array()函数的使用

numpy.array(object, dtype = None, copy = True, order = None, subok = False, ndmin = 0)

           

序号参数及描述
1.object 任何暴露数组接口方法的对象都会返回一个数组或任何(嵌套)序列。
2.dtype 数组的所需数据类型,可选。
3.copy 可选,默认为true,对象是否被复制。
4.order C(按行)、F(按列)或A(任意,默认)。
5.subok 默认情况下,返回的数组被强制为基类数组。 如果为true,则返回子类。
6.ndimin 指定返回数组的最小维数。

数组的属性

   numpy.shape : 返回一个包含数组元素的元组,也可以调整数组的排列形式

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

    numpy.reshape()  功能与属性shape相似,但一个为方法,一个为属性

a.reshape(3,2)

  numpy.ndim 返回数组的维数 

数组的创建

  np.arange(start,stop,step,dtype='')  返回等间隔数字的函数
 
a= np.arange(2,10,2,dtype='flaot')
print a  # [2.,4.,6.,8.]
np.linspace(start,stop,num,endpoint,restep,dtype)  
1.start序列的起始值
2.stop序列的终止值,如果endpointtrue,该值包含于序列中
3.num 要生成的等间隔样例数量,默认为50
4.endpoint序列中是否包含stop值,默认为ture
5.retstep如果true,返回样例,以及连续数字之间的步长
6.dtype输出ndarray的数据类型
其他函数np.zeros(shapge) np.ones(shapge) np.empty(shape) 相当于matlab中的函数,

切片和索引(用户遍历数组中的元素)

      切片(slice对象)通过将start,stop和step参数提供给内置的slice函数来构造一个 Python slice对象

a= np.arange(0,10,1,dtype='float')

s=slice(2,5,1)  # 函数而非对象

print a[s] #[2 3 4]

     上述代码等价于:

import numpy as np
a = np.arange(10)
b = a[2:7:2]  
print b

获取单个元素: a[5] 

获取第2个及之后的元素:a[2:]

获取第2个至第5个元素:a[2:5]

获取数组的逆序:a[::-1]

·切片还可以包括省略号(...),来使选择元组的长度与数组的维度相同。 如果在行位置使用省略号,它将返回包含  行中元素的ndarray

import numpy as np
a = np.array([[1,2,3],[3,4,5],[4,5,6]])  
print  '我们的数组是:'  
print a
print  '\n'  
# 这会返回第二列元素的数组:  
print  '第二列的元素是:'  
print a[...,1]  
print  '\n'  
# 现在我们从第二行切片所有元素:  
print  '第二行的元素是:'  
print a[1,...]  
print  '\n'  
# 现在我们从第二列向后切片所有元素:
print  '第二列及其剩余元素是:'  
print a[...,1:]

高级索引

     高级索引始终返回数据的副本。 与此相反,切片只提供了一个视图。

   有两种类型的高级索引:整数和布尔值。

   整数索引:

import numpy as np 
x = np.array([[1,  2],  [3,  4],  [5,  6]]) 
y = x[[0,1,2],  [0,1,0]]  
print y  ## [1 4 5]

  使用 : 和 ...的高级索引

import numpy as np 
x = np.array([[  0,  1,  2],[  3,  4,  5],[  6,  7,  8],[  9,  10,  11]])  
print  '我们的数组是:'  
print x 
print  '\n'  
# 切片
z = x[1:4,1:3]  
print  '切片之后,我们的数组变为:'  
print z 
print  '\n'  
# 对列使用高级索引 
y = x[1:4,[1,2]] 
print  '对列使用高级索引来切片:'  
print y

   结果: 

我们的数组是:
[[ 0  1  2] 
 [ 3  4  5] 
 [ 6  7  8]
 [ 9 10 11]]

切片之后,我们的数组变为:
[[ 4  5]
 [ 7  8]
 [10 11]]

对列使用高级索引来切片:
[[ 4  5]
 [ 7  8]
 [10 11]]

布尔索引

print a[a>5]

 

import numpy as np 
x = np.array([[  0,  1,  2],[  3,  4,  5],[  6,  7,  8],[  9,  10,  11]])  
print  '我们的数组是:'  
print x 
print  '\n'  
# 现在我们会打印出大于 5 的元素  
print  '大于 5 的元素是:'  
print x[x >  5]

   结果

我们的数组是:
[[ 0  1  2] 
 [ 3  4  5] 
 [ 6  7  8] 
 [ 9 10 11]] 

大于 5 的元素是:
[ 6  7  8  9 10 11]
 









  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
完整版:https://download.csdn.net/download/qq_27595745/89522468 【课程大纲】 1-1 什么是java 1-2 认识java语言 1-3 java平台的体系结构 1-4 java SE环境安装和配置 2-1 java程序简介 2-2 计算机中的程序 2-3 java程序 2-4 java类库组织结构和文档 2-5 java虚拟机简介 2-6 java的垃圾回收器 2-7 java上机练习 3-1 java语言基础入门 3-2 数据的分类 3-3 标识符、关键字和常量 3-4 运算符 3-5 表达式 3-6 顺序结构和选择结构 3-7 循环语句 3-8 跳转语句 3-9 MyEclipse工具介绍 3-10 java基础知识章节练习 4-1 一维数组 4-2 数组应用 4-3 多维数组 4-4 排序算法 4-5 增强for循环 4-6 数组和排序算法章节练习 5-0 抽象和封装 5-1 面向过程的设计思想 5-2 面向对象的设计思想 5-3 抽象 5-4 封装 5-5 属性 5-6 方法的定义 5-7 this关键字 5-8 javaBean 5-9 包 package 5-10 抽象和封装章节练习 6-0 继承和多态 6-1 继承 6-2 object类 6-3 多态 6-4 访问修饰符 6-5 static修饰符 6-6 final修饰符 6-7 abstract修饰符 6-8 接口 6-9 继承和多态 章节练习 7-1 面向对象的分析与设计简介 7-2 对象模型建立 7-3 类之间的关系 7-4 软件的可维护与复用设计原则 7-5 面向对象的设计与分析 章节练习 8-1 内部类与包装器 8-2 对象包装器 8-3 装箱和拆箱 8-4 练习题 9-1 常用类介绍 9-2 StringBuffer和String Builder类 9-3 Rintime类的使用 9-4 日期类简介 9-5 java程序国际化的实现 9-6 Random类和Math类 9-7 枚举 9-8 练习题 10-1 java异常处理 10-2 认识异常 10-3 使用try和catch捕获异常 10-4 使用throw和throws引发异常 10-5 finally关键字 10-6 getMessage和printStackTrace方法 10-7 异常分类 10-8 自定义异常类 10-9 练习题 11-1 Java集合框架和泛型机制 11-2 Collection接口 11-3 Set接口实现类 11-4 List接口实现类 11-5 Map接口 11-6 Collections类 11-7 泛型概述 11-8 练习题 12-1 多线程 12-2 线程的生命周期 12-3 线程的调度和优先级 12-4 线程的同步 12-5 集合类的同步问题 12-6 用Timer类调度任务 12-7 练习题 13-1 Java IO 13-2 Java IO原理 13-3 流类的结构 13-4 文件流 13-5 缓冲流 13-6 转换流 13-7 数据流 13-8 打印流 13-9 对象流 13-10 随机存取文件流 13-11 zip文件流 13-12 练习题 14-1 图形用户界面设计 14-2 事件处理机制 14-3 AWT常用组件 14-4 swing简介 14-5 可视化开发swing组件 14-6 声音的播放和处理 14-7 2D图形的绘制 14-8 练习题 15-1 反射 15-2 使用Java反射机制 15-3 反射与动态代理 15-4 练习题 16-1 Java标注 16-2 JDK内置的基本标注类型 16-3 自定义标注类型 16-4 对标注进行标注 16-5 利用反射获取标注信息 16-6 练习题 17-1 顶目实战1-单机版五子棋游戏 17-2 总体设计 17-3 代码实现 17-4 程序的运行与发布 17-5 手动生成可执行JAR文件 17-6 练习题 18-1 Java数据库编程 18-2 JDBC类和接口 18-3 JDBC操作SQL 18-4 JDBC基本示例 18-5 JDBC应用示例 18-6 练习题 19-1 。。。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值