Numpy数据科学基础

Numpy数据科学基础


常用函数

  • 生成多维数组
    #看数组的维度直接看最外层"[["的个数,比如“ [ ”一维;“ [[ ”二维;“ [[[ ”三维;……
import numpy as np
example_1d = np.ndarray([1,2,3,4,5,6])    # 返回一个多维数组
# 可简写为 np.array([1,2,3,4,5,6])   # 生成一维数组

example_1d.sum()
example_1d.max()
example_1d.min()
np.average(example_1d)   # 平均值

# 生成二维数组
# 方式一:
example_2d = np.array([[1,2,3],   
                        [4,5,6]])
# 方式二:
example_2d = example_1d.reshape(2,3)  # 将一维数组强制转换为2*3的二维数组
  • 数组切片
# 一维数组和List切片一样
# 二维数组array_2d[行,列] = array_2d[:2,1:2] # 读取第1行和第2行的第2列的元素
# ------------------------------------------------------
>>> import numpy as np
>>> array_1d = np.array([1,2,3,4,5,6,7,8,9])#生成一维数组
>>> #将一维数组强制转化为二维数组
>>> array_2d = array_1d.reshape(3,3)#转化为3*3的二维数组  
# -------------------------------------------------------
>>> array_1d.shape
(9,)
>>> array_2d.shape
(3, 3) 
# -------------------------------------------------------
>>> array_2d
array([[1, 2, 3],
      [4, 5, 6],
      [7, 8, 9]])
# -------------------------------------------------------
>>> array_2d[:,0]#读取所有行的第一列
array([1, 4, 7])
>>> array_2d[1:,:1]
array([[4],
      [7]])
>>> array_2d[1:,:2]
array([[4, 5],
      [7, 8]])

向量化计算

  • 基本原则
    (1)最大程度不使用for循环
    (2)尽量使用Numpy自带的函数 # Numpy是用C语言编写的,所以运行速度很快
    (3)多使用广播
  • 矩阵相乘
>>> array_2d_1 = [[2],[2],[2]]
>>> array_2d_1   # 生成3*1的二维数组
[[2],
 [2], 
 [2]]
>>> array_2d     # 生成3*3的二维数组
array([[1, 2, 3],
       [4, 5, 6],
       [7, 8, 9]])
>>> np.dot(array_2d,array_2d_1)   # 使用dot()方法生成3*1的数组
array([[12],
       [30],
       [48]])

广播

  • 简单来说,Numpy的 广播功能 就是可以直接让 矩阵实数 一样进行各种运算
>>> example = np.array([[1,2,3],[4,5,6]])
>>> example.shape
(2, 3)
>>> example
array([[1, 2, 3],
       [4, 5, 6]])
>>> example+1         # 按照线性代数的知识,一个实数和矩阵是不能相加的                    
array([[2, 3, 4],     # 但Numpy的广播功能就能自动实现矩阵中每一个元素的乘除加减
       [5, 6, 7]])    # 这个功能对于数据科学计算很有用,不用去考虑复杂的循环实现
>>> example-1
array([[0, 1, 2],
       [3, 4, 5]])
>>> example*2
array([[ 2,  4,  6],
       [ 8, 10, 12]])
>>> example/2
array([[0.5, 1. , 1.5],
       [2. , 2.5, 3. ]])

猜你喜欢

转载自blog.csdn.net/Han_Panda/article/details/108001935