numpy包的使用

numpy包的使用

  1. 数组的简介 ndarray
  2. 数组的创建 list/tuple np.arange() 内置函数
  3. 索引和切片 python一致
  4. 数组的变换 x.flatten() .reshape() x.transpose()
  5. 数组的组合 hstack vstack
  6. 数据分割 hsplit vsplit
  7. 矩阵 生成矩阵 矩阵和数组之间的转换 mat array

一、数组的简介
Numpy中,最重要的数据结构是:多维数组类型(numpy.ndarray)

ndarray由两部分组成:实际所持有的数据和这些数据的元数据(metadata)
数组(即矩阵)的维度被称为axes,维数称为rank
ndarray 的重要属性包括:

  • ndarray.ndim:数组的维数,也称为rank
  • ndarray.shape:数组各维的大小,对一个n行m列的矩阵来说, shape 为 (n,m)
  • ndarray.size:元素的总数。
  • ndarray.dtype:每个元素的类型,可以是numpy.int32, numpy.int16, and numpy.float64等
  • ndarray.itemsize:每个元素占用的字节数。
  • ndarray.data:指向数据内存。

二、数组的创建

1.使用array方法生成数组(array,也就是数组,是numpy中最基础的数据结构,最关键的属性是维度和元素类型)

n1=np.array([1,2,3,4])
n1
array([1, 2, 3, 4])

n2=np.array((1,2,3,4))
n2
array([1, 2, 3, 4])

2.使用np.arange()方法生成数组

np.arange([start, ]stop, [step, ]dtype=None)

np.arange(5)
array([0, 1, 2, 3, 4])
**衍生**
np.random.randint(10,150,size=(2,3))
array([[ 38, 103, 106],
           [ 98, 134,  15]])

3.使用内置函数生成特殊矩阵
零矩阵

np.zeros((3,4))
[[ 0.  0.  0.  0.]
    0 .0.  0.  0.]
  [ 0.  0.  0.  0.]]

一矩阵

np.ones((3,4))

单位矩阵

 print np.eye(3)

三、索引和切片(和python语法一致)

  x = np.array(((1,2,3),(4,5,6)))
    x[1,2] #获取第二行第三列的数6
    
    y=x[:,1] #获取第二列
    yarray([2, 5])

四、数组的变换*
1、多维变成一维(x.flatten())

>>> x
array([[1, 2, 3],
       [4, 5, 6]])
 >>> x.flatten()
 array([1, 2, 3, 4, 5, 6])

2、一维变成多维(.reshape())

  >>> print np.arange(15).reshape(3,5) #改变形状,将一维的改成三行五列
    [[ 0  1  2  3  4]
     [ 5  6  7  8  9]
      [10 11 12 13 14]]

3.转置(x.transpose())

 >>> x
    array([[1, 2, 3],
           [4, 5, 6]])
     >>> x.transpose()
     array([[1, 4],
            [2, 5],
            [3, 6]])

五、数组的组合 hstack vstack

  1. 水平组合
n1=np.array([1,2,3,4])
n1
n3=np.random.randint(0,3,5)
n3
np.hstack((n1,n3))
array([1, 2, 3, 4, 1, 2, 2, 0, 1])

2.垂直组合

 >>> numpy.vstack((x,y))
 array([[1, 2, 3],
        [4, 5, 6],
        [1, 2, 3], 
        [4, 5, 6]])

六、数据分割 hsplit vsplit

1、垂直分割

>>> z
array([[1, 2, 3],
       [4, 5, 6],
       [1, 2, 3],
       [4, 5, 6]])
 >>> numpy.vsplit(z,2) #注意这里设置的分割数目必须可以被行数整除
 >[array([[1, 2, 3],
        [4, 5, 6]]), array([[1, 2, 3],
               [4, 5, 6]])]

2.水平分割

>>> numpy.hsplit(z,3)
[array([[1],
       [4], 
       [1], 
       [4]]), array([[2],
	[5],
	[2], 
	[5]]), array([[3],
	[6],
	[3],
	[6]])]


用split函数可以同时实现这两个效果,通过设置其axis参数区别,与组合类似,这里不在演示。

七、矩阵
1.生成矩阵

>>> numpy.mat('1 2 3;4 5 6;7 8 9')
matrix([[1, 2, 3], 
       [4, 5, 6], 
       [7, 8, 9]])

2.矩阵与数组之间的转换
矩阵转数组

>>> m=numpy.mat('1 2 3;4 5 6;7 8 9')
>>> numpy.array(m)
array([[1, 2, 3],
       [4, 5, 6],
       [7, 8, 9]])

数组转矩阵

>>> n=numpy.array(m)
>>> numpy.mat(n)
matrix([[1, 2, 3],
        [4, 5, 6], 
        [7, 8, 9]])



  求逆m.I
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值