ndarray,N维数组对象(矩阵)
- 所有元素必须是相同类型
- ndim属性,维度个数
- shape属性,各维度大小
- dtype属性,数据类型
创建ndarray
- np.array(collection),collection为序列对象(list),嵌套序列(list of list)
- np.zeros,np.ones,np.empty指定大小的全0或全1数组
注意:第一个参数是元组,用来指定大小,如(3,4),第二个参数是数据类型
empty不是总是返回全0,有时返回的是末初始的随机值
如:
np.zeros((3,4)) #3行4列 数值全为0的数组,里面的参数是元组 (3,4)
np.empty((3,3)) #3行3列,随机数组成的数组
np.empty((3,3),int) #ndarray 第一个元组(3,3) 第二个参数是数据类型 int
创建ndarray
np.arange()类似range() 注意是arange,不是英文的arrange
ndarray数据类型
- dtype,类型名+位数,如float64,int32
- 转换数组类型 astype
import numpy as np
zeros_float_arr = np.zeros((3,4),dtype = np.float64)
print(zeros_float_arr)
print(zeros_float_arr.dtype)
zeros_int_arr = zeros_float_arr.astype(np.int32)
print(zeros_int_arr)
print(zeros_int_arr.dtype)
矢量化
- 矢量运算,相同大小的数组健间的运算应用在元素上
- 适量和标量运算,"广播"-将标量"广播"到各个元素
矢量与矢量运算
arr = np.array([[1,2,3],
[4,5,6]])
矢量与标量运算
print(1./arr)
print(2*arr)
索引与切片
- 一维数组的索引与python的列表索引功能类似
- 多维数组的索引
arr(r1:r2,c1:c2]
arr[1,1]等价arr[1][1]
[:]代表某个维度的数据
如:[r1:,c1:] 从开始到所有
arr[:,1:3] 二维数组的所有行和第1第2两列
条件索引
- 布尔值多维数组 arr[condition] condition可以是多个条件组合
- 注意,多个条件组合要使用& | ,而不是and or
维数转换
- 转置transpose
- 高维数组转置要指定维度编号(0,1,2,....)
通用函数
- 元素级运算
常用的通用函数
- ceil,向上最接近的整数
- floor,向下最接近的整数
- rint,四舍五入
- isnan,判断元素是否为 NaN(Not a Number)
- multiply,元素相乘
- divide,元素相除
np.where
- 矢量版本的三元表达式 x if condition else y
- np.where(condition,x,y) 满足条件输出x,不满足条件输出y
- 如:
跟np.rint差不多
np.rint不会改变原数组的数值类型,如果需要,如可以用 arr.astype(np.int32)
常用的统计方法
- np.mean,np.sum
- np.max,np.min
- np.std,np.var
- np.argmax,np.argmin
- np.cumsum,np.cumprod
- 注意多维的要指定统计的维度,否则默认是全部维度上做统计.
np.any 判断是否数组里面任一值某一条件,如果有满足的,则为True,如果都不满足则为False
np.all 判断是否数组里面所有的值都满足某一条件,如果满足则为True,否则则为False
np.unique 找到唯一值并返回排序结果了 如下: