array属性
- ndim 维度数量
- shape 一个表示各维度大小的元组,即数组形状
- dtype 数据类型
- size 元素总个数
array创建
- array函数:接收一个普通的Python序列,转成ndarray
- zeros函数:创建指定长度或形状的全零数组
- ones函数:创建指定长度或形状的全1数组
- empty函数:创建一个没有任何具体值的数组(准确地说是一些未初始化的垃圾值)
array其他创建方式
- arrange函数:类似于python的range函数,通过指定开始值、终值和步长来创建一维数组,注意数组不包括终值
- linspace函数:通过指定开始值、终值和元素个数来创建一维数组,可以通过endpoint关键字指定是否包括终值,缺省设置是包括终值
- logspace函数:和linspace类似,不过它创建等比数列
- 使用随机数填充数组,即使用numpy.random模块的random()函数,数组所包含的的元素数量由参数决定
- reshape()函数可以改变数组的形状,但是注意元素总个数不能改变
Numpy中的数据类型
- 32/148int_ 默认整型(与C中的long相同,通常为int64或者int32)
- intc 完全等同于C中的long(通常为int64或者int32)
- intp 表示索引的整型,与C中的size_t相同,通常为int64或者int32
- int8 i1 字节(-128 ~ 127),1个字节int16 i2 整型(-32768 ~ 32767),2个字节
- int32 i4 整型(-2147483648 ~ 2147483647),4个字节
- int64 i8 整型(-9223372036854775808~9223372036854775807),8字节
- uint8 u1 无符号整型(0~255)
- uint16 u2 无符号整型(0~65535)
- uint32 u4 无符号整型(0~4294967295)
- float_ float64的简写形式
- float16 f2 半精度浮点型:符号位,5位指数,10位小数部分
- float32 f4或者f 半精度浮点型:符号位,8位指数,23位小数部分
- float64 f8或者d 半精度浮点型:符号位,11位指数,52位小数部分
- float128 f16或者g 扩展精度浮点数
- complex_ c1 complex128的简写形式
- complex64 c8 复数,由两个32位的浮点数来表示(实数部分和虚数部分)
- complex128c16 复数,由两个64位的浮点数来表示(实数部分和虚数部分)
- bool_ 以一个字节形式存储的布尔值(True或者False)
- bool ? 存储True和False值的布尔类型
- object O Python对象类型
- String_ S 固定长度的字符串类型(每个字符1个字节)。例如要创建一个长度为8的字符串,应使用S8
- Unicode_ U 固定长度的unicode类型(字节数由平台决定),跟字符串的定义方式一样,比如U20
改变array形状
- 直接修改ndarray的shape值
- 使用reshape函数,可以创建一个改变了尺寸的新数组,原数组的shape保持不变,但注意他们共享内存空间,因此修改任何一个也对另一个产生影响,因此注意新数组的元素个数必须与原数组一样
- 当指定新数组某个轴的元素为-1时,将根据数组元素的个数自动计算此轴的长度
NumPy基本操作
数组与标量、数组之间的运算
- 数组不用循环即可对每个元素执行批量运算,这通常就叫做矢量化,即用数组表达式代替循环的做法
- 矢量化数组运算性能要比纯Python方式快上一两个数量级
- 大小相等的数组之间的任何算术运算都会将运算应用到元素级