概述

从今天开始, 小白我将带领大家学习一下 Python 零基础入门的内容. 本专栏会以讲解 + 练习的模式, 带领大家熟悉 Python 的语法, 应用, 以及代码的基础逻辑.

在这里插入图片描述

Numpy

Numpy 是 Python 非常重要的一个库, 为我们提供了大量数据处理的函数.

Numpy 安装

安装命令:

pip install numpy
pip3 install numpy

Anaconda

Anaconda 是一个计算科学库, 可以为我们提供便利的 Python 环境.

安装:
Anaconda 官网

在这里插入图片描述

导包

导入 Numpy 包:

# 导包
import numpy as np
![在这里插入图片描述](https://img-blog.csdnimg.cn/002699042b894844a1349b86b29bdc6a.gif)

ndarray

ndarray 是 Numpy 最重要的一个特点. ndarray 是一个 N 维数组对象.

在这里插入图片描述

np.array 创建

np.array可以帮助我们创建一 ndarray.

格式:

numpy.array(object, dtype=None, *, copy=True, order='K', subok=False, ndmin=0, like=None)

参数:

  • object: 类数组
  • dtype: 数据类型, 可选

例子:

# 导包
import numpy as np

# 创建ndarray
array1 = np.array([1, 2, 3])  # 通过lsit创建
array2 = np.array([1, 2, 3], dtype=float)

# 调试输出
print(array1, type(array1))
print(array2, type(array2))

输出结果:

# 导包
import numpy as np

# 创建ndarray
array1 = np.array([1, 2, 3])  # 通过lsit创建
array2 = np.array([1, 2, 3], dtype=float)

# 调试输出
print(array1, type(array1))
print(array2, type(array2))

np.zeros 创建

np.zeros可以帮助我们创建指定形状的全 0 数组.

格式:

numpy.zeros(shape, dtype=float, order='C', *, like=None)

参数:

  • shape: 数组形状
  • detype: 默认为 float, 浮点型

例子:

import numpy as np

# 创建全0的ndarray
array = np.zeros((3, 3), dtype=int)
print(array)

输出结果:

[[0 0 0]
 [0 0 0]
 [0 0 0]]

np.ones 创建

np.zeros可以帮助我们创建指定形状的全 1 数组.

格式:

numpy.ones(shape, dtype=float, order='C', *, like=None)

参数:

  • shape: 数组形状
  • detype: 默认为 float, 浮点型

例子:

import numpy as np

# 创建全1的ndarray
array = np.ones((3, 3), dtype=int)
print(array)
print(type(array))

输出结果:

[[1 1 1]
 [1 1 1]
 [1 1 1]]
<class 'numpy.ndarray'>

常用函数

在这里插入图片描述

reshape

通过reshape()我们可以改变数组形状.

格式:

numpy.reshape(arr, newshape, order='C')

参数:

  • arr: 需要改变形状的数组
  • newshape: 新的形状

例子:

import numpy as np

# 创建ndarray
array = np.zeros(9)
print(array)

# reshape
array = array.reshape((3,3))
print(array)
print(array.shape)  # 调试输出数组形状

输出结果:

[0. 0. 0. 0. 0. 0. 0. 0. 0.]
[[0. 0. 0.]
 [0. 0. 0.]
 [0. 0. 0.]]
(3, 3) 

flatten

通过flatten()我们可以将多维数组摊平成1 维数组.

例子:

import numpy as np

# 创建多维数组
array = np.zeros((3, 3))
print(array)

# flatten转变为一维数组
array = array.flatten()
print(array)

输出结果:

[[0. 0. 0.]
 [0. 0. 0.]
 [0. 0. 0.]]
[0. 0. 0. 0. 0. 0. 0. 0. 0.]

练习

练习1

数组创建与基础操作:

  • 创建一个形状为 (5, 5) 的数组,其中所有元素都为整数1。
  • 创建一个长度为 20 的一维随机整数数组,范围在 1 到 100 之间。
  • 将上述一维数组重新塑形为 (5, 4) 的二维数组。

练习2

数组索引与切片:

  • 创建一个形状为 (10, 10) 的随机整数数组,范围在 1 到 100 之间。提取出其中的第 3 到 8 行,第 4 到 9 列的子数组。
  • 从上述数组中,提取出所有的偶数元素。

练习3

数组操作与数学运算:

  • 创建两个形状为 (3, 3) 的随机整数数组 A 和 B,范围在 1 到 10 之间。计算 A 与 B 的点积。
  • 计算上述数组 A 的逆矩阵(如果存在)。

参考答案

练习1

import numpy as np


array = np.ones([5,5], dtype=int)
print(array)
array = np.random.randint(1, 101, size=20)
print(array)
array = array.reshape((5, 4))
print(array)

输出结果:

[[1 1 1 1 1]
 [1 1 1 1 1]
 [1 1 1 1 1]
 [1 1 1 1 1]
 [1 1 1 1 1]]
[22 13 20 67  5 91 26 64 84 85 59 66 44 83 41 63 44 23 76 35]
[[22 13 20 67]
 [ 5 91 26 64]
 [84 85 59 66]
 [44 83 41 63]
 [44 23 76 35]]

练习2

import numpy as np


array = np.random.randint(1, 101, size=(10, 10)).reshape((10,10))
print(array)
array = array[2:8, 3:9]
print(array)
array = array[array % 2 == 0]
print(array)

输出结果:

[[1 1 1 1 1]
 [1 1 1 1 1]
 [1 1 1 1 1]
 [1 1 1 1 1]
 [1 1 1 1 1]]
[ 32   6  91  48  63  81  87  28  19  25  20  93  97 100  70  77   3  46
 100   7]
[[ 32   6  91  48]
 [ 63  81  87  28]
 [ 19  25  20  93]
 [ 97 100  70  77]
 [  3  46 100   7]]
[[1 1 1 1 1]
 [1 1 1 1 1]
 [1 1 1 1 1]
 [1 1 1 1 1]
 [1 1 1 1 1]]
[71 63  6 50 59 69 14 18 80 88 68 54 35 97 51 82 86 50 61  9]
[[71 63  6 50]
 [59 69 14 18]
 [80 88 68 54]
 [35 97 51 82]
 [86 50 61  9]]

练习3

import numpy as np


a = np.random.randint(1, 11, size=(3, 3))
b = np.random.randint(1, 11, size=(3, 3))
print(a)
print(b)
result = np.dot(a, b)
print(result)

det_a = np.linalg.det(a)

if det_a == 0:
    print("矩阵 A 不可逆")
else:
    inverse_a = np.linalg.inv(a)
    print("A 的逆矩阵为: \n", inverse_a)

输出结果:

[[ 8  6  4]
 [10  5  5]
 [ 7  7  9]]
[[ 7  2  9]
 [10  9  6]
 [ 5  7  1]]
[[136  98 112]
 [145 100 125]
 [164 140 114]]
A 的逆矩阵为: 
 [[-9.09090909e-02  2.36363636e-01 -9.09090909e-02]
 [ 5.00000000e-01 -4.00000000e-01 -7.93016446e-18]
 [-3.18181818e-01  1.27272727e-01  1.81818182e-01]]
Logo

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。

更多推荐