Python数据分析基础篇【Numpy的基础语法讲解】


前言

NumPy是一个功能强大的Python库,允许更高级的数据操作和数学计算。在机器学习模型、图像处理和计算机图形学、数学任务等方面有着充分作用。后期可能会写OpenCV相关的博客,因为这是与Numpy非常相关,而个人非常感兴趣的部分。
本文主要是个人学习笔记,与各位小伙伴分享,不喜勿喷。


理解Numpy(简单入门)

numpy中的数组

一维与二维数组

import numpy as np

my_array = np.array([i for i in range(10)])  # [0  1  2  3  4  5  6  7  8  9]
print(my_array[0])  # 0
my_array[0] = -1  # 修改值
print(my_array)  # 打印 ——> [-1  1  2  3  4  5  6  7  8  9]
print(my_array.shape)  # (10,) my_array的形状

my_new_array = np.zeros((5))  # 创建一个长度为5的NumPy数组,但所有元素都为0
print(my_new_array, type(my_new_array), my_new_array[0])  # [0. 0. 0. 0. 0.] <class 'numpy.ndarray'> 0.0
ones = np.ones((10))  # [1. 1. 1. 1. 1. 1. 1. 1. 1. 1.] #元素全为1
my_random_array = np.random.random((5))  # 生成随机数组 每个元素分配0到1之间的随机值。 如 0.27316213
my_2d_array = np.zeros((2, 3))  # 生成二维数组,np.ones((3,3))
my_array_zd = np.array([[4, 5], [6, 1]])  # 指定
my_array_column_2 = my_array_zd[:, 1]  # 拿到二维数组的,每一行的二号元素
print(my_array_column_2)

# 取元素
# my_array_zd [0][0]  #C语言数组语法
"""
import numpy as np

q = np.array([[1, 2, 3, 4],
              [5, 6, 7, 8]])
print(q[0, 0], q[0][0], sep="\n")
"""

数组的简单操作

简单加减乘除

import numpy as np

a = np.array([[1.0, 2.0], [3.0, 4.0]])
b = np.array([[5.0, 6.0], [7.0, 8.0]])
sum = a + b  # 对应元素相加
"""
就是a[0][0]+b[0][0],a[0][1]+b[0][1]
"""
difference = a - b  # 对应元素相减
product = a * b  # 对应元素相乘
quotient = a / b  # 对应元素相除
print("Sum = \n", sum)
print("Difference = \n", difference)
print("Product = \n", product)
print("Quotient = \n", quotient)

矩阵乘法

import numpy as np

a = np.array([[1.0, 2.0], [3.0, 4.0]])
b = np.array([[5.0, 6.0], [7.0, 8.0]])
matrix_product = a.dot(b)
print(matrix_product)  # 矩阵乘法,要有一定线性代数基础
# a为MxN矩阵,b为NxD矩阵,才可以相乘,结果r为MxD矩阵

NumPy 基础操作

创建数组

简单矩阵

import numpy as np

a = np.array([i for i in range(20)])  # 传入一个列表
q = np.array([[np.arange(5, 10)],  # for 循环里面的range
              [np.ones(5)],
              [np.zeros(5)],
              [np.random.random(5)],
              [np.linspace(0, 2 * np.pi, 5)]
              ])  # 以上元素可以单独拿出来创建数组,如b=np.ones(5)      >>>[1.         1.         1.         1.         1.        ]
print(a)
print(q)

其他数组

创建正对角线为1,其他为0的矩阵
import numpy as np

a = np.eye(3, 3)  # 创建正对角线为1,其他为0的矩阵
print(a)

生成均匀分段的数组
import numpy as np

# 函数linspace在指定的时间间隔内返回均匀间隔的数字
num = np.linspace(0, 10, num=4)
print(num)

多维数组(以三维举例)
import numpy as np

array = np.arange(27).reshape(3,3,3) # 数组形状控制,x,y,z
print(array)
Python数组转换为数组
import numpy as np

l = [(1, 2, 3), (4, 5, 6)]
print(type(l), type(l[0]))
array = np.array(l)  # Python数组转换
print(array)

random库
import numpy as np

n = np.random.random((2, 2))  # 2x2的[0,1)数字
print(np.random.randint(1, 20))  # 随机抽一个数
print(np.random.choice(10, 11))  # 生成11为0-9的数

索引与切片

多维数组切片

import numpy as np

a = np.array([[11, 12, 13, 14, 15],
              [16, 17, 18, 19, 20],
              [21, 22, 23, 24, 25],
              [26, 27, 28, 29, 30],
              [31, 32, 33, 34, 35]])

print(a[2, 4])  # >>>25
print(a[0, 1:4]) # >>>[12 13 14]
print(a[1:4, 0]) # >>>[16 21 26]
print(a[::2,::2]) # >>>[[11 13 15]
                  #     [21 23 25]
                  #     [31 33 35]]
print(a[:, 1]) # >>>[12 17 22 27 32]

在这里插入图片描述

切指定元素

import numpy as np

# 选取我们指定的元素,列表切片
a = np.arange(0, 100, 10)
indices = [1, 5, -1]  # 列表切片
b = a[indices]
print(a)  # >>>[ 0 10 20 30 40 50 60 70 80 90]
print(b)  # >>>[10 50 90]

缺省切片

b = a[:5]
c = a[a >= 50]
print(b) # >>>[ 0 10 20 30 40]
print(c) # >>>[50 60 70 80 90]

Where 函数

import numpy as np

# Where
a = np.arange(0, 100, 10)
b = np.where(a < 50)
c = np.where(a >= 50)[0]
print(b)  # >>>(array([0, 1, 2, 3, 4]),)
print(c)  # >>>[5 6 7 8 9]

数据属性及类型与数学运算

数据属性

import numpy as np

# Array properties
a = np.array([[11, 12, 13, 14, 15],
              [16, 17, 18, 19, 20],
              [21, 22, 23, 24, 25],
              [26, 27, 28 ,29, 30],
              [31, 32, 33, 34, 35]])

print(type(a)) # >>><class 'numpy.ndarray'>
print(a.dtype) # >>>int64
print(a.size) # >>>25
print(a.shape) # >>>(5, 5)
print(a.itemsize) # >>>8
print(a.ndim) # >>>2
print(a.nbytes) # >>>200

数据类型

import numpy as np

x = np.array([1, 2])  # Let numpy choose the datatype
print(x.dtype)  # int32

x = np.array([1.0, 2.0])  # Let numpy choose the datatype
print(x.dtype)  # float64

# dtype参数
x = np.array([1, 2], dtype=np.int64)  # Force a particular datatype
print(x.dtype)  # int64

数学运算

加减乘除、矩阵乘法
import numpy as np

x = np.array([[1,2],[3,4]], dtype=np.float64)
y = np.array([[5,6],[7,8]], dtype=np.float64)

# Elementwise sum; both produce the array
# [[ 6.0  8.0]
#  [10.0 12.0]]
print(x + y)
print(np.add(x, y))

# Elementwise difference; both produce the array
# [[-4.0 -4.0]
#  [-4.0 -4.0]]
print(x - y)
print(np.subtract(x, y))

# Elementwise product; both produce the array
# [[ 5.0 12.0]
#  [21.0 32.0]]
print(x * y)
print(np.multiply(x, y))

# Elementwise division; both produce the array
# [[ 0.2         0.33333333]
#  [ 0.42857143  0.5       ]]
print(x / y)
print(np.divide(x, y))

# Elementwise square root; produces the array
# [[ 1.          1.41421356]
#  [ 1.73205081  2.        ]]
print(np.sqrt(x))
sum等运算
# dot, sum, min, max, cumsum
a = np.arange(10)

print(a.sum()) # >>>45
print(a.min()) # >>>0
print(a.max()) # >>>9
print(a.cumsum()) # >>>[ 0  1  3  6 10 15 21 28 36 45]

总结

关于Numpy的学习,要有一定的线性代数基础,至于一些涉及时间的操作和线性代数的函数,在使用时,参考专业文档,多实战,拿来主义。
Numpy中文网
Numpy官网

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

额狮虎

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值