numpy快速入门教程

numpy如果使用python做过机器学习或者科学计算方面项目的朋友并陌生,它是一个非常好用的python科学计算库,而且numpy是用c实现的,效率也非常高。这篇博客译自斯坦福大学python快速入门教程的numpy快速入门教程,除此之外我还添加了一些自己的见解。

一、numpy创建数组

import numpy as np

#numpy数组创建
if __name__ == "__main__":
    #通过Python的列表来初始化数组
    a = np.array([1,2,3])
    print(a)  #[1 2 3]
    #获取数组的类型
    print(type(a))  #<class 'numpy.ndarray'>
    #获取数组的shape
    print(a.shape)  #(3,)
    #修改数组中的元素
    a[1] = 9
    print(a)  #[1 9 3]

    #通过numpy内置的函数来初始化数组
    #创建一个全0的数组
    b = np.zeros((3,3))
    print(b)
    '''
    [[ 0.  0.  0.]
     [ 0.  0.  0.]
     [ 0.  0.  0.]]
    '''
    #创建一个全1的数组
    c = np.ones((3,3))
    print(c)
    '''
    [[ 1.  1.  1.]
     [ 1.  1.  1.]
     [ 1.  1.  1.]]
    '''
    #创建一个指定的矩阵
    d = np.full((3,3),6)
    print(d)
    '''
    [[ 6.  6.  6.]
     [ 6.  6.  6.]
     [ 6.  6.  6.]]
    '''
    #创建一个单位矩阵
    e = np.eye(3)
    print(e)
    '''
    [[ 1.  0.  0.]
     [ 0.  1.  0.]
     [ 0.  0.  1.]]
    '''
    #创建一个随机数的矩阵
    f = np.random.random((3,3))
    print(f)
    '''
    [[ 0.96550928  0.59525056  0.58061721]
     [ 0.21303049  0.82996793  0.77914749]
     [ 0.30441988  0.6055475   0.93730574]]
    '''

二、numpy切片

import numpy as np

if __name__ == "__main__":
    #数组切片
    #创建一个数组
    a = np.array([[1,2,3],[4,5,6],[7,8,9]])
    #对numpy数组进行切片
    #切片的时候,下标是从0开始的,但是不包括右边区间
    b = a[:2,:3]
    print(b)
    '''
    [[1 2 3]
    [4 5 6]]
    '''
    c = a[1:2,1:2]
    print(c)
    '''
    [[5]]
    '''
    #改变切片后的任意一个元素值,所有的数组相应的值也都会发现改变,这里与Python的列表切片有所不同
    #从下面的结果其实可以将numpy的切片理解成为地址的复制
    c[0,0] = 55
    print(a)
    '''
    [[ 1  2  3]
    [ 4 55  6]
    [ 7  8  9]]
    '''
    print(b)
    '''
    [[ 1  2  3]
    [ 4 55  6]]
    '''
    print(c)
    '''
    [[55]]
    '''
    '''
    下面通过三种不同的切片方法来获取数组a的最后一行元素
    通过下面可以发现,其实第一种方法和第三种方法的结果是一样的
    可以理解成a[2]其实就是指定获取数组第二行的所有元素
    '''
    #获取的数组比原数组的阶要低
    row_1 = a[2,:]
    print(row_1)        #[7 8 9]
    print(row_1.shape)  #(3,)
    #获取的数组与原数组拥有相同的阶
    row_2 = a[2:3,:]
    print(row_2)        #[[7 8 9]]
    print(row_2.shape)  #(1, 3)
    row_3 = a[2]
    print(row_3)        #[7 8 9]
    print(row_3.shape)  #(3,)

    '''
    通过上面对数组进行切片操作,也许你会发现一个问题,
    获取的数组总是原数组的子数组,要么是属于原数组的某(几)一行或者某(几)一列中的元素
    下面介绍一种获取原数组中任意元素所组成的数组的方法
    '''
    arbitrary = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
    #[0,0,2]作为数组arbitrary行的下标,[0,1,2]作为数组列的下标,然后进行一一对应组合
    arbitrary_1 = arbitrary[[0,0,2],[0,1,2]]
    print(arbitrary_1)  #[1 2 9]
    arbitrary_2 = np.array([arbitrary[0,0],arbitrary[0,1],arbitrary[2,2]])
    print(arbitrary_2)  #[1 2 9]



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值