zoukankan      html  css  js  c++  java
  • Numpy基础篇一

    [NumPy用法总结]

    NumPy用法总结

    快速了解NumPy

    NumPy是一个开源的Python科学计算库,用于快速处理任意维度的数组。
    NumPy支持常见的数组和矩阵操作。对于同样的数值计算任务,使用NumPy比直接使用Python要简洁的多。
    NumPy使用ndarray对象来处理多维数组,该对象是一个快速而灵活的大数据容器

    优势

    1. 对于同样的数值计算任务,使用Numpy要比直接编写Python代码便捷地多
    2. NumPy中的数组的存储效率和输入输出性能均远远优于Python中等价的基本数据结构,且能够提升的性能是与数组中的元素成比例的
    3. Numpy的大部分代码都是用C语言写的,其底层算法在设计时就有着优异的性能,这使得NumPy比纯Python代码高效地多

    NumPy的Ndarray对象

    创建一维数组

    1234567891011121314151617181920# 一维数组
    import numpy as np
    
    # 创建数组的多种形式
    
    # 1. 直接传入列表的形式进行创建
    list1 = [1,2,3,4,5]
    oneArray = np.array(list1)
    print(type(oneArray))
    print(oneArray)
    
    # 2.传入range()生成序列
    t2 = np.array(range(10))
    print(t2)
    print(type(t2))
    
    # 3. 使用numpy自带的np.arange()生成数组
    t3 = np.arange(0,10,2)
    print(t3)
    print(type(t3))
    

    运行结果:
    <class 'numpy.ndarray'>
    [1 2 3 4 5]

    [0 1 2 3 4 5 6 7 8 9]
    <class 'numpy.ndarray'>

    [0 2 4 6 8]
    <class 'numpy.ndarray'>


    创建二维数组

    123456# 创建二维数组
    import numpy as np
    list2 = [[1,2],[3,4],[5,6]]
    
    twoArray = np.array(list2)
    print(twoArray)
    

    运行结果:
    [[1 2]
    [3 4]
    [5 6]]


    常用属性

    12345678910111213141516# 常用属性
    import numpy as np
    
    list2 = [[1,2],[3,4],[5,6]]
    
    twoArray = np.array(list2)
    print(twoArray)
    
    # 获取数组的维度(注意:与函数的参数很像)
    print(twoArray.ndim)
    
    # 形状(行,列)
    print(twoArray.shape)
    
    # 有多少个元素
    print(twoArray.size)
    

    运行结果:
    [[1 2]
    [3 4]
    [5 6]]

    2

    (3, 2)

    6


    调整数组的形状

    12345678910111213141516171819import numpy as np
    
    four = np.array([[1,2,3],[4,5,6]])
    
    print(four,four.shape,id(four))
    # 修改的是原有的
    # four.shape = (3,2)
    # print(four)
    # 修改返回一个新的数组
    # five = four.reshape(3,2)
    # print(four,id(five))
    # print(four)
    
    # 将多维数组变成一维数组
    # 默认情况下 'C'以行为主的顺序展开,'F'(Fortran风格)意味着以列的顺序展开
    five = four.reshape((6,),order="F")
    six = four.flatten(order='C')
    print(five)
    print(six)
    

    运行结果:
    [[1 2 3]
    [4 5 6]] (2, 3) 2183058601424

    [1 4 2 5 3 6]
    [1 2 3 4 5 6]


    123456789101112# 维度的转换
    t = np.arange(24)
    print(t)
    print(t.shape)
    # 转化为二维
    t1 =t.reshape((4,6))
    print(t1)
    print(t1.shape)
    # 转化为三维
    t2 = t.reshape((2,3,4))
    print(t2)
    print(t2.shape)
    

    运行结果:
    [ 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,)

    [[ 0 1 2 3 4 5]
    [ 6 7 8 9 10 11]
    [12 13 14 15 16 17]
    [18 19 20 21 22 23]]
    (4, 6)

    [[[ 0 1 2 3]
    [ 4 5 6 7]
    [ 8 9 10 11]]

    [[12 13 14 15]
    [16 17 18 19]
    [20 21 22 23]]]
    (2, 3, 4)


    将数组转为list

    12345# 将数组转化为列表
    a = np.array([9,12,88,14,25])
    list_a = a.tolist()
    print(list_a)
    print(type(list_a))
    

    运行结果:
    [9, 12, 88, 14, 25]
    <class 'list'>


    数组的计算

    数组和数的计算

    1234567# 数组的操作
    t1 = np.arange(24).reshape((6,4))
    t2 = np.arange(100,124).reshape((6,4))
    print(t1)
    print(t2)
    print(t1+t2)
    print(t1*t2)
    

    运行结果:
    [[ 0 1 2 3]
    [ 4 5 6 7]
    [ 8 9 10 11]
    [12 13 14 15]
    [16 17 18 19]
    [20 21 22 23]]

    [[100 101 102 103]
    [104 105 106 107]
    [108 109 110 111]
    [112 113 114 115]
    [116 117 118 119]
    [120 121 122 123]]

    [[100 102 104 106]
    [108 110 112 114]
    [116 118 120 122]
    [124 126 128 130]
    [132 134 136 138]
    [140 142 144 146]]

    [[ 0 101 204 309]
    [ 416 525 636 749]
    [ 864 981 1100 1221]
    [1344 1469 1596 1725]
    [1856 1989 2124 2261]
    [2400 2541 2684 2829]]


    数组与数组之间的操作

    123456# 不同形状的多维数组不可以进行计算
    t1 = np.arange(24).reshape((4,6))
    t2 = np.arange(18).reshape((3,6))
    print(t1)
    print(t2)
    # print(t1-t2)
    1234567# 行数或列数相同的一维数组和多维数组也可以进行计算,直适合一维数组和多维数组的情况
    # 行形状相同
    t1 = np.arange(24).reshape((4,6))
    t2 = np.arange(0,6)
    print(t1)
    print(t2)
    print(t1-t2)
    

    运行结果:
    [[ 0 1 2 3 4 5]
    [ 6 7 8 9 10 11]
    [12 13 14 15 16 17]
    [18 19 20 21 22 23]]

    [0 1 2 3 4 5]

    [[ 0 0 0 0 0 0]
    [ 6 6 6 6 6 6]
    [12 12 12 12 12 12]
    [18 18 18 18 18 18]]


    123456# 列形状相同
    t1 = np.arange(24).reshape((4,6))
    t2 = np.arange(4).reshape((4,1))
    print(t1)
    print(t2)
    print(t1+t2)
    

    运行结果:
    [[ 0 1 2 3 4 5]
    [ 6 7 8 9 10 11]
    [12 13 14 15 16 17]
    [18 19 20 21 22 23]]

    [[0]
    [1]
    [2]
    [3]]

    [[ 0 1 2 3 4 5]
    [ 7 8 9 10 11 12]
    [14 15 16 17 18 19]
    [21 22 23 24 25 26]]


  • 相关阅读:
    Apple Developer Program Roles Overview
    iOS 使用UIView的一种有效方法
    百度面试(转)
    iOS 冒泡排序
    iOS 面试题及答案
    iOS 开发进程与线程
    iOS 应用内跳转到appstore里下载
    iOS 使用封装的NSLog来打印调试信息
    iOS 并发编程指南
    苹果App Store审核指南中文翻译(2014.9.1更新)
  • 原文地址:https://www.cnblogs.com/2506236179zhw/p/14926450.html
Copyright © 2011-2022 走看看