Numpy 学习之路(1)——数组的创建
数组是Numpy操作的主要对象,也是python数据分析的主要对象,本系列文章是本人在学习Numpy中的笔记。
文章中以下都基于以下方式的numpy导入:
import numpy as np from numpy import *
1、普通数组的创建——np.arange(), np.array(),
(1) arange()建立是顺序数组,函数原型:arange([start,]stop[,step],dtype=None)
其中start参数如果省略,则表示从0开始,默认的dtype为float32
#创建从0-19的一维数组ar_1 ar_1=np.arange(20) #output: ar_1=array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,17, 18, 19]) #创建11-20,step=2的一维数组ar_2 ar_2=np.arange(11,21,2) #output:ar_2=array([11, 13, 15, 17, 19])
(2)array()的主要用于创建多维数组,原型为:array(object, dtype=None, copy=True, order=None, subok=False, ndmin=0)
- object : 是一个array_like象,包括list,tuple等__array__定制类可以返回类数组的对象。
- dtype:数据类型,默认为可以保存数据的最小类型,可以制定
- 其他的参数可以通过help来查看,这里就只介绍最常用的
#创建一个2*3的数组,数据类型为int32 ary_1=np.array([[2,2,3],[5,7,3]],dtype=int32) #output:ary_1=([[2, 2, 3], # [5, 7, 3]], dtype=int32) #创建一个2*3*3的数组,数据类型默认: ary_2=np.array([[[3,4,5],[3.3,4.2,4.2],[1.3,2.2,5.8]],[[2.3,1.9,5.7],[4.5,6.7,9.7],[2.2,1.2,7.99]]]) #output: #array([[[ 3. , 4. , 5. ], # [ 3.3 , 4.2 , 4.2 ], # [ 1.3 , 2.2 , 5.8 ]], # # [[ 2.3 , 1.9 , 5.7 ], # [ 4.5 , 6.7 , 9.7 ], # [ 2.2 , 1.2 , 7.99]]]) ary_2.dtype #output:dtype('float64'),#虽然由int和float, array是以可以保存这些数据的最小数据类型保存,所以是float32#当然也可以通过reshape等方式改变数组的维度,从而获得自己所需要的数组ary_3=np.arange(20,30).reshape(2,5)#output:ary_3#array([[20, 21, 22, 23, 24],# [25, 26, 27, 28, 29]])
2. 特殊数组的创建:
(1)空数组:empty(),empty_like()
- empty(shape[,dtype=None,order=]), 创建一个形状构成为shape的空数组,dtype为数据类型,order为顺序形式:C(C语言)-row-major;F(Fortran)column-major。
- empty_like(array), 依据给定数组(a)的形状和类型返回一个新的空数组。
#创建一个3*3的空数组: e_1=np.empty([3,3]) #In [89]: print e_1 #[[ 1.72723371e-077 2.68678134e+154 4.44659081e-323] #[ 0.00000000e+000 0.00000000e+000 0.00000000e+000] #[ 0.00000000e+000 0.00000000e+000 0.00000000e+000]] #填充的数值都是随机的random #通过empty_like创建与e_1一样形状的空数组 e_2=np.empty_like(e_1) #In [93]: print e_2 #[[ 1.72723371e-077 1.72723371e-077 2.00299617e-313] #[ 1.72723371e-077 5.92878775e-323 3.18299369e-313] #[ 0.00000000e+000 9.73471935e-309 0.00000000e+000]]
(2)其他特殊数组创建:eye, ones, zeros也有类似的结构,另外还有一个identity函数,用以创建方阵
- eye[N,[, M, k, dtype]), N为行数,M为列数(如果不设置默认为N),对角线序列号: 0 对应主对角线;,整数对应upper diagonal,负数对应lower diagonal;
- eye_like(array),创建形状与array一样形状的对角线为1的数组
#创建3*3主对角线为1的方阵: ey_1=np.eye(3,3,k=0) print ey_1 #[[ 1. 0. 0.] #[ 0. 1. 0.] #[ 0. 0. 1.]] #ey_2的对角线uper了一个位置(行) ey_2=np.eye(3,3,k=1) pringt ey_2 #[[ 0. 1. 0.] #[ 0. 0. 1.] #[ 0. 0. 0.]]
- ones(shape[,dtpe=,order]):按照给定的形状返回一个形状为shape的元素为1的数组
- ones_like(a):返回一个形状跟a一样的元素为1的数组
one_1=np.ones([5,9]) print one_1 #In [99]: print one_1 #[[ 1. 1. 1. 1. 1. 1. 1. 1. 1.] #[ 1. 1. 1. 1. 1. 1. 1. 1. 1.] #[ 1. 1. 1. 1. 1. 1. 1. 1. 1.] #[ 1. 1. 1. 1. 1. 1. 1. 1. 1.] #[ 1. 1. 1. 1. 1. 1. 1. 1. 1.]]
- zeros(shape[,dtype,order]): 按照给定的形状返回一个形状为shape的元素为0的数组
- zeros_like(a):返回一个形状跟a一样的元素为0的数组
zero_1=np.zeros([2,3]) print zero_1 #[[ 0. 0. 0.] #[ 0. 0. 0.]]
- identity(n[,dtype=])返回一个n维的方阵
In [103]: iden Out[103]: array([[ 1., 0., 0., 0., 0., 0., 0.], [ 0., 1., 0., 0., 0., 0., 0.], [ 0., 0., 1., 0., 0., 0., 0.], [ 0., 0., 0., 1., 0., 0., 0.], [ 0., 0., 0., 0., 1., 0., 0.], [ 0., 0., 0., 0., 0., 1., 0.], [ 0., 0., 0., 0., 0., 0., 1.]])
3. 结构体数组
通常,一个数组保存的元素都是同源的,即数组内所有元素都需为同一个类型。在实际的数据分析过程中,尤其是二维spreadsheet式格式的数据,同一行的数据由不同的类型构成。这就需要为这种数据定义一个个性的dtype。dtype实际上是一个类,可以通过赋予参数定义特殊的结构体数组类型。(个人觉得有点类似于SAS中的informat)
#定义一个名称为person的dtype,通过dtype #一个peson由name,age和weight构成 person=np.dtype([('name',str,20),('age',int32),('weight',float32)]) print person #[('name', 'S20'), ('age', '<i4'), ('weight', '<f4')] #就可以创建dtype为person的数组了 student=array([('cnblog',10,12.2),('myBlog',40,30)],dtype=person) #由于类型规定了参数的个数,所以需要用tuple来创建数组的行数(因为其不可变),否则可能会有一个readable的exception print student #[('cnblog', 10, 12.199999809265137) ('myBlog', 40, 30.0)]
4. 从文件创建(后续会有专门介绍)
Numpy 学习之路(1)——数组的创建的更多相关文章
- numpy的学习之路(1)——创建数组以及基本运算
需要导入的包 import numpy as np import pandas 一.利用numpy创建数组 1.1创建简单数组 array =np.array([[1,2,3], [2,3,4]]) ...
- Numpy学习一:ndarray数组对象
NumPy是Python的一个高性能科学计算和数据分析基础库,提供了功能强大的多维数组对象ndarray.jupyter notebook快速执行代码的快捷键:鼠标点击选中要指定的代码框,Shift ...
- numpy库的认识以及数组的创建
numpy库 numpy是Python数值计算最重要的基础包.大多数提供科学计算的包都是用NumPy的数组作为构建基础.numpy十分高效,基于NumPy的算法要比纯Python快10到100倍(甚至 ...
- 自动化测试学习之路--java 数组
数组的定义与为数组元素分配空间和赋值是分开进行的,称为动态初始化. 在数组定义的同时就为数组元素分配空间并赋值,称为静态初始化. 一维数组举例: //动态初始化 int[] intArr; intAr ...
- Linux命令学习之路——文档连接创建:ln
使用权限:所有角色 使用方式:ln [ -options ] source target 作用:建立源文件与目标文件之间的连接 注意点: 1.连接分为硬连接和软连接,其中硬连接不能对目录做硬连接,且不 ...
- Vue 学习之路(一)- 创建脚手架并创建项目
安装脚手架 命令 npm install -g @vue/cli 打开 cmd 窗口输入以上命令.当出现以下界面即表示安装完成. 查看已安装脚手架版本 命令 vue -V 在 cmd 窗口输入以上命令 ...
- Numpy学习之——数组创建
Numpy学习之--数组创建 过程展示 import numpy as np a = np.array([2,3,9]) a array([2, 3, 9]) a.dtype dtype('int32 ...
- numpy学习之创建数组
1.使用array函数创建数组 import numpy as np ndarray1 = np.array([1, 2, 3]) array([1, 2, 3]) ndarray2 = np.arr ...
- (一)初识NumPy库(数组的创建和变换)
在学习数据分析时,NumPy作为最基础的数据分析库,我们能够熟练的掌握它是学习数据分析的必要条件.接下来就让我们学习该库吧. 学习NumPy库的环境: python:3.6.6 编辑器:pycharm ...
随机推荐
- 解决zookeeper报错[NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:NIOServerCnxn@362] - Exception causing close
zookeeper.out报错: 2016-12-10 18:05:46,958 [myid:3] - WARN [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181 ...
- VUE 入门基础(1)
一,安装 Vue.js 不支持 IE8 及其以下版本,因为 Vue.js 使用了 IE8 不能模拟的 ECMAScript 5 特性. Vue.js 支持所有兼容 ECMAScript 5 的浏览器. ...
- SQL Server 索引(index) 和 视图(view) 的简单介绍和操作
--索引(index)和视图(view)-- --索引(index)----概述: 数据库中的索引类似于书籍的目录,他以指针形式包含了表中一列或几列组合的新顺序,实现表中数据库的逻辑排序.索引创建在数 ...
- java简单日历
一.使用java的calendar类写一个简单的日历 package com.calendar; import java.util.Calendar; import java.util.Date; i ...
- CSS 多浏览器兼容性问题及解决方案
兼容性处理要点1.DOCTYPE 影响 CSS 处理 2.FF: 设置 padding 后, div 会增加 height 和 width, 但 IE 不会, 故需要用 !important 多设一个 ...
- Spring+springmvc+Mybatis整合案例 xml配置版(myeclipse)详细版
Spring+springmvc+Mybatis整合案例 Version:xml版(myeclipse) 文档结构图: 从底层开始做起: 01.配置web.xml文件 <?xml version ...
- oracle 身份证校验函数
1.正则表达式写法: CREATE OR REPLACE FUNCTION Func_checkidcard (p_idcard IN VARCHAR2) RETURN INT IS v_regstr ...
- 如何进入IT行业?
其实IT行业就如一个具有标准配件的机一样是开放的行业,无论你是否科班出身,无论你是什么学历,只要你掌握相关的针对性很强的计算机知识,想在IT行业发展随时可以即插即用,这主要由IT行业的特点确PC定的. ...
- asp.net 琐记
Page的AutoEventWireup作用是是否引发PreInit Load PreRender Unload几个页面处理流程事件 和控件的事件处理函数无关
- iOS常用库之Masonry
简单介绍 Masonry 源码地址:https://github.com/Masonry/Masonry Masonry是一个轻量级的布局框架 拥有自己的描述语法 采用更优雅的链式语法封装自动布局 简 ...