Numpy基础功能索引——续

接上上篇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]: data
Out[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 < 0
Out[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] = 0
In [56]: data
Out[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]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值