马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
ndarray主动广播扩展维度,便于举行行列式,数组盘算- # 自动广播机制,1维数组和2维数组相加
- # 二维数组维度 2x5
- # array([[ 1, 2, 3, 4, 5],
- # [ 6, 7, 8, 9, 10]])
- d = np.array([[1, 2, 3, 4, 5], [6, 7, 8, 9, 10]])
- # c是一维数组,维度5
- # array([ 4, 6, 8, 10, 12])
- c = np.array([ 4, 6, 8, 10, 12])
- e = d + c
- e
- # 输出
- array([[ 5, 8, 11, 14, 17], [10, 13, 16, 19, 22]])
复制代码 创建ndarray- # 导入numpy
- import numpy as np
- # 1、从list创建array
- a = [1,2,3,4,5,6] # 创建简单的列表
- b = np.array(a) # 将列表转换为数组
- b
- # 输出
- array([1, 2, 3, 4, 5, 6])
- # 2、arange:创建元素从0到10依次递增2的数组
- # 通过np.arange创建
- # 通过指定start, stop (不包括stop),interval来产生一个1维的ndarray
- a = np.arange(0, 10, 2)
- a
- # 输出
- array([0, 2, 4, 6, 8])
- # 3、zeros:创建指定长度或者形状的全0数组
- a = np.zeros([3,3])
- a
- # 输出
- array([[0., 0., 0.], [0., 0., 0.], [0., 0., 0.]])
- # 4、ones:创建指定长度或者形状的全1数组
- a = np.ones([3,3])
- a
- # 输出
- array([[1., 1., 1.], [1., 1., 1.], [1., 1., 1.]])
复制代码 ndarray的属性包罗shape、dtype、size和ndim等,通过如下代码可以查察ndarray数组的属性。
- shape:数组的形状 ndarray.shape,1维数组(N,)(N,),2维数组(M,N)(M,N),3维数组(M,N,K)3维数组(M,N,K)。
- dtype:数组的数据范例。
- size:数组中包罗的元素个数ndarray.size,其巨细即是各个维度的长度的乘积。
- ndim:数组的维度巨细ndarray.ndim, 其巨细即是ndarray.shape所包罗元素的个数。
- a = np.ones([3, 3])
- print('a, dtype: {}, shape: {}, size: {}, ndim: {}'.format(a.dtype, a.shape, a.size, a.ndim))
- a, dtype: float64, shape: (3, 3), size: 9, ndim: 2
复制代码 创建ndarray之后,可以对其数据范例或形状举行修改,代码实现如下:- # 转化数据类型
- b = a.astype(np.int64)
- print('b, dtype: {}, shape: {}'.format(b.dtype, b.shape))
- # 改变形状
- c = a.reshape([1, 9])
- print('c, dtype: {}, shape: {}'.format(c.dtype, c.shape))
复制代码 数组间运算- # 数组 减去 数组, 用对应位置的元素相减
- arr1 = np.array([[1., 2., 3.], [4., 5., 6.]])
- arr2 = np.array([[11., 12., 13.], [21., 22., 23.]])
- # 数组 乘以 数组,用对应位置的元素相乘
- arr1 * arr2
- array([[ 11., 24., 39.], [ 84., 110., 138.]])
- # 数组开根号,将每个位置的元素都开根号
- arr ** 0.5
- array([[1. , 1.41421356, 1.73205081], [2. , 2.23606798, 2.44948974]])
复制代码 切片上的操纵都会改变原数组,除非用np.copy创建新的内存空间- # 数组切片产生的新数组,还是指向原来的内存区域,数据不会被复制。
- # 视图上的任何修改都会直接反映到源数组上。
- a = np.arange(30)
- arr_slice = a[4:7]
- arr_slice[0] = 100
- a, arr_slice
- (array([ 0, 1, 2, 3, 100, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29]), array([100, 5, 6]))
- # 通过copy给新数组创建不同的内存空间
- a = np.arange(30)
- arr_slice = a[4:7]
- arr_slice = np.copy(arr_slice)
- arr_slice[0] = 100
- a, arr_slice
- (array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29]), array([100, 5, 6]))
复制代码
- mean:盘算算术均匀数,零长度数组的mean为NaN。
- std和var:盘算标准差和方差,自由度可调(默以为n)。
- sum :对数组中全部或某轴向的元素求和,零长度数组的sum为0。
- max和min:盘算最大值和最小值。
- argmin和argmax:分别为最大和最小元素的索引。
- cumsum:盘算全部元素的累加。
- cumprod:盘算全部元素的累积。
随机数np.random- # 可以多次运行,观察程序输出结果是否一致
- # 如果不设置随机数种子,观察多次运行输出结果是否一致
- np.random.seed(10)
- a = np.random.rand(3, 3)
- # 设置了随机数种子,每次输出都一样
- # 生成均匀分布随机数,随机数取值范围在[0, 1)之间
- a = np.random.rand(3, 3)
- a
- array([[0.08833981, 0.68535982, 0.95339335], [0.00394827, 0.51219226, 0.81262096], [0.61252607, 0.72175532, 0.29187607]])
- # 生成均匀分布随机数,指定随机数取值范围和数组形状
- a = np.random.uniform(low = -1.0, high = 1.0, size=(2,2))
- a
- array([[ 0.83554825, 0.42915157], [ 0.08508874, -0.7156599 ]])
- # 生成标准正态分布随机数
- a = np.random.randn(3, 3)
- a
- array([[ 1.484537 , -1.07980489, -1.97772828], [-1.7433723 , 0.26607016, 2.38496733], [ 1.12369125, 1.67262221, 0.09914922]])
- # 生成正态分布随机数,指定均值loc和方差scale
- a = np.random.normal(loc = 1.0, scale = 1.0, size = (3,3))
- a
- array([[2.39799638, 0.72875201, 1.61320418], [0.73268281, 0.45069099, 1.1327083 ], [0.52385799, 2.30847308, 1.19501328]])
- # 打乱数组顺序(只打乱第一维)
- # 生成一维数组
- a = np.arange(0, 30)
- # 打乱一维数组顺序
- np.random.shuffle(a)
- # 随机选取部分元素
- a = np.arange(30)
- b = np.random.choice(a, size=5)
复制代码 线性代数
- diag:以一维数组的情势返回方阵的对角线(或非对角线)元素,或将一维数组转换为方阵(非对角线元素为0)。
- dot:矩阵乘法。
- trace:盘算对角线元素的和。
- det:盘算矩阵行列式。
- eig:盘算方阵的特性值和特性向量。
- inv:盘算方阵的逆。
文件读写- # 使用np.fromfile从文本文件'housing.data'读入数据
- # 这里要设置参数sep = ' ',表示使用空白字符来分隔数据
- # 空格或者回车都属于空白字符,读入的数据被转化成1维数组
- d = np.fromfile('./work/housing.data', sep = ' ')
- # save & load
- # 产生随机数组a
- a = np.random.rand(3,3)
- np.save('a.npy', a)
- # 从磁盘文件'a.npy'读入数组
- b = np.load('a.npy')
复制代码 np.exp(x) --盘算x的指数值
|