Numpy基础功能索引——续

来源:互联网 发布:隔墙听音器 淘宝 编辑:程序博客网 时间:2024/05/18 20:10

接上上篇blog: Numpy基础功能索引

ndarray

ndarray(数组)作为Numpy中定义的一个对象,是Numpy的基础。ndarray是一个同构数据多维容器。也就是说,ndarray作为一个容器,其中数据的数据类型必需是相同的,其中的数据可以是多维的。ndarray有两个属性来形容它自己:shape表示数组结构+dtype表示数组的数据类型

创建数组

最常用的是np.array()

In [48]: data = np.array([[1, 2], [11, 12]], dtype=str)In [50]: dataOut[50]: array([['1', '2'],       ['11', '12']],       dtype='|S2')In [51]: data.astype(int)Out[51]: array([[ 1,  2],       [11, 12]])

tips:代码中的int会自动转成np中的数据类型np.int1

创建数组的函数 描述 np.arange() range()的数组 np.ones() 全1数组 np.zeros() 全0数组 np.empty() 创建空数组,但是返回的是垃圾值,不是0 np.ones_like() 创建形如…的元素都为1的数组 np.zeros_like() 创建形如…的元素都为0的数组 np.empty_like() 创建形如…的元素为空的数组 np.eye() 单位方阵 np.identify() 也是单位方阵

Numpy中的切片

Numpy的切片与list中类似,不做详述2。但是Numpy中的切片得到的是原始数据的视图,如果在视图改变数据,那么原始数据也会改变。如果要得到原始数据的复制,则要显式的表达arr[5:8].copy()特例是bool型索引,它返回的是原始数据的复制

bool型索引

In [53]: data = np.random.randn(7, 4)In [54]: data < 0Out[54]: array([[False,  True, False, False],       [False, False, False, False],       [ True, False,  True,  True],       [ True, False,  True,  True],       [ True, False,  True, False],       [ True,  True,  True, False],       [False,  True, False, False]], dtype=bool)In [55]: data[data < 0] = 0In [56]: dataOut[56]: array([[ 1.4368676 ,  0.        ,  1.04331785,  0.96806906],       [ 0.40453328,  0.08870373,  1.45806316,  0.14055398],       [ 0.        ,  0.73339497,  0.        ,  0.        ],       [ 0.        ,  2.23611536,  0.        ,  0.        ],       [ 0.        ,  1.23302155,  0.        ,  1.66173436],       [ 0.        ,  0.        ,  0.        ,  0.68743457],       [ 0.59085145,  0.        ,  0.85077155,  0.24273212]])

Numpy中的排序

可以指定轴,如arr.sort(1),返回的也是视图。
np.unique():唯一化加排序

Numpy中的线性代数

数组的转置arr.T
常用的numpy.linalg函数如下表所示:

函数 说明 diag 以一维数组的形式返回方阵的对角线(或非对角线)元素,或将一维数组转换为方阵(非对角线元素为0) dot 矩阵乘法 trace 计算对角线元素的和 det 计算矩阵行列式 eig 计算方阵的本征值和本征向量 inv 计算方阵的逆 pinv 计算矩阵的Moore-Penrose伪逆 qr 计算QR分解 svd 计算奇异值分解 solve 解线性方程组Ax=b,其中A为一个方阵 lstsq 计算Ax=b的最小二乘解
笔者的话
Numpy基础功能索引到这里就完成了,写这两篇博客的目的一方面是练习写csdn的markdown,另一方面是为了做一个简单的索引表,以后想用numpy实现某些功能的时候就不用翻书了。

  1. float是python中的基本数据类型,np.float64或者np.float或者其他都是np中的数据类型,两者虽然精度不同,但是作==判断时是相等的 ↩
  2. 数组还可以这样arr2d[0][2]==arr2d[0, 2]
1 0
原创粉丝点击