numpy的一点学习

1、Numpy模块

NumPy是Python中的一个运算速度非常快的一个数学库,它非常重视数组。它允许你在Python中进行向量和矩阵计算,并且由于许多底层函数实际上是用C编写的,因此你可以体验在原生Python中永远无法体验到的速度。

  • 机器学习模型:在编写机器学习算法时,需要对矩阵进行各种数值计算。例如矩阵乘法、换位、加法等。NumPy提供了一个非常好的库,用于简单(在编写代码方面)和快速(在速度方面)计算。NumPy数组用于存储训练数据和机器学习模型的参数。
  • 图像处理和计算机图形学:计算机中的图像表示为多维数字数组。NumPy成为同样情况下最自然的选择。实际上,NumPy提供了一些优秀的库函数来快速处理图像。例如,镜像图像、按特定角度旋转图像等。
  • 数学任务NumPy对于执行各种数学任务非常有用,如数值积分、微分、内插、外推等。因此,当涉及到数学任务时,它形成了一种基于Python的MATLAB的快速替代。

由于是第三方模块,所以要进行下载: pip insatll numpy

数组基础

numpy主要就是围绕着数组进行展开;主要用于矢量和矩阵、线性代数等数学运算

import numpy
my_array = numpy.array([1,2,3,4,5])
print(my_array)
# 生成数组
[1 2 3 4 5]
#  my_array 是一个包含5个元素的数组。
print(my_array.shape)  # (5, )     # 数组的尺寸, 几行几列
# 打印各个元素
print(my_array[0])  # 1
# 修改数组元素
my_array[0] = -1
print(my_array)

# 快捷创建就是
my_array = numpy.arange(10)
print(my_array)
# 输出为:[0 1 2 3 4 5 6 7 8 9]    注意: arange有点类似于Python中的range,都是顾头不顾尾

二维数组的创建

import numpy
array = numpy.arange(10).reshape(5,2)  # reshape值得是重塑函数
print(array)
# 输出为:
[[0 1]
 [2 3]
 [4 5]
 [6 7]
 [8 9]]
此处: # reshape(5,2)的意思就是5代表的是数组的列数,2代表的是每个单独数组的元素为2个

三维数组的创建

import numpy
array = numpy.arange(27).reshape(3,3,3)
print(array)
# 注意: 数组中的元素数量27必须是尺寸3*3*3的积
# 输出为
[[[ 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 25 26]]]

dot()

  • 除了 dot() 之外,这些操作符都是对数组进行逐元素运算。比如 (a, b, c) + (d, e, f) 的结果就是 (a+d, b+e, c+f)。它将分别对每一个元素进行配对,然后对它们进行运算。它返回的结果是一个数组。注意,当使用逻辑运算符比如 “<” 和 “>” 的时候,返回的将是一个布尔型数组,这点有一个很好的用处,后边我们会提到。

    dot() 函数计算两个数组的点积。它返回的是一个标量(只有大小没有方向的一个值)而不是数组。

    #它背后的一些数学知识

    dot()函数称为点积。理解这一点的最好方法是看下图,下图将表示它是如何进行计算的。

  • 我们使用dot函数来计算向量的内积,将向量乘以矩阵,并乘以矩阵。 dot既可以作为numpy模块中的函数,也可以作为数组对象的实例方法:

  • import numpy as np
    x = np.array([[1,2],[3,4]])
    y = np.array([[5,6],[7,8]])
    v = np.array([9,10])
    w = np.array([11, 12])
    print(v.dot(w))
    print(np.dot(v, w))
    print(x.dot(v))
    print(np.dot(x, v))
    # [[19 22]
    #  [43 50]]
    print(x.dot(y))
    print(np.dot(x, y)) 计算两个向量之间的点积
posted on 2019-05-16 15:48  liudemeng  阅读(150)  评论(0编辑  收藏  举报