NumPy学习笔记(1)

1. 程序开头导入库

import numpy as np

2. 创建数组(ndarray)

a = [1,2,3,4]

aa = np.array(a)--------->生成一维数组

bb = np.array([a,a])----->生成二维数组

aa.shape

bb.shape------------------>获得尺寸(2, 4)

bb.shape = (1,8) ---------> Reshape为1X8数组,8可以用-1表示,这样自动计算尺寸

c = bb.reshape(2,4)------>用reshape函数获得新数组,注意这里c与bb共享存储空间。若想隔离,需要用copy()函数

3. 数组的类型

bb.dtype------------------------>获得bb的数值类型,可能为int32, int64, float64, complex128等

生成不同数值类型的数组:

d = np.array([1,2,3,4], dtype=np.complex)

完整的类型列表:

>>> set(np.typeDict.values())

set([<type 'numpy.bool_'>, <type 'numpy.int8'>, <type 'numpy.void'>, <type 'numpy.int32'>, <type 'numpy.uint32'>, <type 'numpy.float128'>, <type 'numpy.string_'>, <type 'numpy.uint8'>, <type 'numpy.float32'>, <type 'numpy.complex256'>, <type 'numpy.int64'>,
<type 'numpy.uint64'>, <type 'numpy.complex64'>, <type 'numpy.unicode_'>, <type 'numpy.uint64'>, <type 'numpy.int16'>, <type 'numpy.uint16'>, <type 'numpy.float64'>, <type 'numpy.object_'>, <type 'numpy.complex128'>, <type 'numpy.int64'>])

4. 几个专门创建数组的函数

np.arrange(start, end, step)---------------->生成等差数列,不包括end值

np.linspace(start, end, num)--------------------------->生成等差数列,默认包括end值

np.linspace(start,  end, num, endpoint=False)-------->不包括end值

np.logspace(start, end, num, base, endpoint)------------------------->生成等比数列

np.zeros(size, dtype), np.zeros_like(other)

np.ones(size, dtype),np.ones_like(other)

np.random.rand(size, dtype)------------------------------------>生成随机数组

np.empty(size, dtype)--------------------------------------------->仅分配空间,不初始化,最快!

np.fromstring(str, dtype)-------------------------------------------->从字符串创建数组

np.frombuffer()

np.fromfile()

np.fromfunction(funcname, size)

5. 数组的切片和下标访问

一维数组的索引如下:

0,1,2,。。。-3,-2,-1,即负数会从后往前数

a[start:end:step]----------------------->取数组的一个切片,与原数组共享内存。不包括end值。

省略start,表示start = 0;

省略end,表示end = -1;

省略step,表示step = 1;

单独生成切片可以用slice函数

slice(start, end, step) = start:end:step

slice(None, end, step) = :end:step

slice(None, None, None) = :

另外也可以用s_对象生成slice

>>> np.s_[::2,2:]

(slice(None, None, 2), slice(2, None, None))

二维数组取一次下标,得到一维数组(想想C中的数组)

多次下标可以用元组方式,如x[2][2]等价于x[2,2],或者直观一点x[(2,2)]

整数索引列表查表

idx = [1, 4, 5, 7]

y = x[idx]------------------->取出x中[1,4,5,7]位置处的值,放入y,不和原数组共享内存

整数数组也是一样的

布尔数组(np.array([True, False, True,...])):只取数组中相应位置为True的元素;

布尔列表[True, False, True, ...]:将按照整数方式取, True = 1, False = 0.

时间: 2024-11-30 20:14:35

NumPy学习笔记(1)的相关文章

Python中Random和Math模块学习笔记

  这篇文章主要介绍了Python中Random和Math模块学习笔记,本文讲解了math模块的数学常量.常用简单函数.三角函数等,讲解了random模块的常用函数.随机挑选和排序等内容,需要的朋友可以参考下 由于最近经常使用到Python中random,math和time``datetime模块, 所以决定花时间系统的学习一下 1. math模块 math中的函数不可以用于太过复杂的数的运算, 如果需要复杂数的运行最好使用cmath模块中同名函数, 如果想要更加高级的数学功能,可以考虑选择标准

JetSpeed学习笔记(一)

笔记 JetSpeed学习笔记(一) fuweilin 2005-4-7 前言 参加了公司的portal的兴趣小组,今天对portal进行学习.首先上网看了看一些portal的资料,对portal.portlet.portlet container以及JSR168等概念有个基本的了解.决定进一步实战的方式感受portal,于是学习JetSpeed.     1.  JetSpeed介绍JetSpeed是Apache组织开发的一个采用Java和XML的开放源代码的企业信息门户的实现.门户可以让终端

PHP输入输出流学习笔记

  这篇文章主要介绍了PHP输入输出流学习笔记,PHP输入和输出流是通过php://来访问的,它允许访问 PHP 的输入输出流.标准输入输出和错误描述符,内存中.磁盘备份的临时文件流以及可以操作其他读取写入文件资源的过滤器,需要的朋友可以参考下 PHP输入和输出流是通过php://来访问的,它允许访问 PHP 的输入输出流.标准输入输出和错误描述符, 内存中.磁盘备份的临时文件流以及可以操作其他读取写入文件资源的过滤器. php://stdin, php://stdout 和 php://std

PHP学习笔记 (1) 环境配置与代码调试

一配置PHP环境 1.了解什么是PHP PHP("PHP: Hypertext Preprocessor",超文本预处理器的字母缩写) PHP,是英文超级文本预处理语言Hypertext Preprocessor的缩写.PHP 是一种 HTML 内嵌式的语言,是一种在服务器端执行的嵌入HTML文档的脚本语言,语言的风格有类似于C语言,被广泛的运用 2.PHP的背景和优势 PHP的发展背景 1).1994年由Rasmus Lerdorf创建,开始是一个简单的Perl语言编写的程序,用统计

Node.js 学习笔记之简介、安装及配置

 本文是Node.js学习笔记系列文章的第一篇,主要给大家讲解的是在Windows和Linux上安装Node.js的方法.软件安装版本以0.12.0为例.希望大家能够喜欢.     简单的说 Node.js 就是运行在服务端的 JavaScript. Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台. Node.js是一个事件驱动I/O服务端JavaScript环境,基于Google的V8引擎,V8引擎执行Javascript的速度非常快,性能非常好. 谁适合阅

node.js学习笔记(9) 和谐模式

众所周知,ECMAScript 是一种开放的.国际上广为接受的脚本语言规范. 它本身并不是一种脚本语言.正如在 Web 应用程序中执行有用操作的 bean 集合(例如,Netscape 的 AWT)是 Sun 的 JavaBean 规范的一种实现一样,JavaScript 是 ECMAScript 规范的一种实现. 2015年6月17日,ECMA国际发布了EcmaScript2015,即EcmaScript6(以下简称ES6)草案的正式版.ES6是继ES5之后的一次主要改进,语言规范由ES5.1

php5学习笔记(转)

php5|笔记 作者: whhwq在phpv.net看到的感觉不错/*+-------------------------------------------------------------------------------+| = 本文为Haohappy读<<Core PHP Programming>> | = 中Classes and Objects一章的笔记 | = 翻译为主+个人心得 | = 为避免可能发生的不必要的麻烦请勿转载,谢谢 | = 欢迎批评指正,希望和所有

动态网页学习:JSP学习笔记全记录

js|笔记|动态|网页 JSP学习笔记(一)-----概述 JSP学习笔记(二)-----使用Tomcat运行JSP文件 JSP学习笔记(三)-----使用JSP处理用户注册和登陆 JSP学习笔记(四)-----JSP动作的使用 JSP学习笔记(五)-----JSP中使用JavaBean JSP学习笔记(六)-----在多个JSP页面之间传递参数 JSP学习笔记(七)-----猜数字游戏 JSP学习笔记(八)-----include的运用 JSP学习笔记(九)-----JSP标签库

java对象序列化学习笔记

java对象|笔记 目前网络上关于对象序列化的文章不少,但是我发现详细叙述用法和原理的文章太少.本人把自己经过经验总结和实际运用中的体会写成的学习笔记贡献给大家.希望能为整个java社区的繁荣做一点事情.    序列化的过程就是对象写入字节流和从字节流中读取对象.将对象状态转换成字节流之后,可以用java.io包中的各种字节流类将其保存到文件中,管道到另一线程中或通过网络连接将对象数据发送到另一主机.对象序列化功能非常简单.强大,在RMI.Socket.JMS.EJB都有应用.对象序列化问题在网