【Python 零基础入门】Numpy 常用函数 数组操作 & 数学运算

概述

Numpy (Numerical Python) 是 Python 编程语言的一个扩展程序库, 支持大量的维度数组与矩阵运算, 并提供了大量的数学函数库. Numpy 利用了多线程数组来存储和处理大型数据集, 从而提供了一个高效的方式来进行数值计算, 特别是对于矩阵预算和线性代数.

Python Numpy 常用函数

Numpy 数组创建

Numpy 常用函数

np.asarray

np.assarray可以将输入转换为 ndarray 数组.

格式:

import numpy as np

array = np.asarray(a, dtype=None, order=None)

参数:

  • a: 待转换的数据, 可以为列表, 元组等
  • dtype: 数据类型

例子:

# 创建数组
list1 = [1, 2, 3]

# 转换为 ndarray
ndarray1 = np.array(list1)
ndarray2 = np.array(list1, dtype=np.float32)

# 调试输出
print(list1)
print(ndarray1)
print(ndarray2)

输出结果:

[1, 2, 3]
[1 2 3]
[1. 2. 3.]

np.arange

np.arange是一个非常实用的函数, 用于创建一系列的值, 类似于 Python 中的range内置函数, 但是返回的是一个数组.

格式:

import numpy as np

array = np.arange(start, stop, step)

参数:

  • start: 数组开始值 (含), 默认为 0
  • stop: 数组结束值 (不含)
  • step: 数组步长

例子:

# 0-9
array1 = np.arange(10)
print(array1)

# 1-10
array2 = np.arange(1, 11)
print(array2)

# 1-10 奇数
array3 = np.arange(1, 11, 2)
print(array3)

输出结果:

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

np.linspace

np.linspace可以帮助我们创建一个等差数列.

格式:

import numpy as np

array = np.linspace(start, stop, num, endpoint)

参数:

  • start: 数组起始值
  • stop: 数组结束值
  • num: 生成的眼本书, 默认为 50
  • endpoint: 布尔值, 如果为 True, 则 “stop” 是最后一个样本, 否则不包括 “stop”, 默认为 True

例子:

# 包括 50
array1 = np.linspace(0, 50)
print(array1)

# 不包括 50
array1 = np.linspace(0, 50, endpoint=False)
print(array1)

# 样本为 10
array1 = np.linspace(5, 50, 10)
print(array1)

输出结果:

[ 0.          1.02040816  2.04081633  3.06122449  4.08163265  5.10204082
  6.12244898  7.14285714  8.16326531  9.18367347 10.20408163 11.2244898
 12.24489796 13.26530612 14.28571429 15.30612245 16.32653061 17.34693878
 18.36734694 19.3877551  20.40816327 21.42857143 22.44897959 23.46938776
 24.48979592 25.51020408 26.53061224 27.55102041 28.57142857 29.59183673
 30.6122449  31.63265306 32.65306122 33.67346939 34.69387755 35.71428571
 36.73469388 37.75510204 38.7755102  39.79591837 40.81632653 41.83673469
 42.85714286 43.87755102 44.89795918 45.91836735 46.93877551 47.95918367
 48.97959184 50.        ]
[ 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. 27. 28. 29. 30. 31. 32. 33. 34. 35.
 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49.]
[ 5. 10. 15. 20. 25. 30. 35. 40. 45. 50.]

数组操作

Numpy 数组操作

reshape

reshape方法用于改变数组形状而不改变其数据.

格式:

import numpy as np

reshaped_array = reshape(a, newshape)

参数:

  • a: 原始数组
  • newshape: 新的形状

例子:

array = np.arange(6)
reshaped_arrary = array.reshape(2, 3)

# 调试输出
print("原始数组:", array, sep="\n")
print("改变形状后的数组:", reshaped_arrary, sep="\n")

array = np.array([[0, 1, 2], [3, 4, 5]])
reshaped_arrary = array.reshape(-1)

# 调试输出
print("原始数组:", array, sep="\n")
print("改变形状后的数组:", reshaped_arrary, sep="\n")

输出结果:

原始数组:
[0 1 2 3 4 5]
改变形状后的数组:
[[0 1 2]
 [3 4 5]]
原始数组:
[[0 1 2]
 [3 4 5]]
改变形状后的数组:
[0 1 2 3 4 5]

flatten

flatten()可以帮助我们将多维数组降为 1 维数组.

格式:

import numpy as np

flattend_array = array.flatten()

例子:

# 创建原始 ndarray
array = np.array([[0, 1, 2], [3, 4, 5], [7, 8, 9]])

# 降为 1 维
flattened_array = array.flatten()

# 调试输出
print("原始数组:", array, sep="\n")
print("降为 1 维的数组:", flattened_array, sep="\n")

输出结果:

原始数组:
[[0 1 2]
 [3 4 5]
 [7 8 9]]
降为 1 维的数组:
[0 1 2 3 4 5 7 8 9]

concatenate

concatenate可以帮助我们沿着指定轴连接相同形状的两个或多个数组.

格式:

import numpy as np

concatenated_array = np.concatenate((a1, a2, ...), axis=0, out=None)

格式:

  • a1, a2: 需要连接的数组
  • axis: 连接轴, 默认为 0, 即纵向拼接, 如果为 1 则横向拼接
  • out: 放置结果的可选参数, 默认为 None

例子:

# 创建原始数组
array1 = np.array([[1, 2], [3, 4]])
array2 = np.array([[5, 6], [7, 8]])

# 纵向拼接
v_concatenated_array = np.concatenate((array1, array2))  # axis 默认为 0

# 横向拼接
h_concatenated_array = np.concatenate((array1, array2), axis=1)

# 调试输出
print("纵向拼接:", v_concatenated_array, sep="\n")
print("横向拼接:", h_concatenated_array, sep="\n")

输出结果:

array 1:
[[1 2]
 [3 4]]
array 2:
[[5 6]
 [7 8]]
纵向拼接:
[[1 2]
 [3 4]
 [5 6]
 [7 8]]
横向拼接:
[[1 2 5 6]
 [3 4 7 8]]

split

split函数可以帮助我们将一个数组分割为多个子数组.

格式:

import numpy as np

splitted_arrays = np.split(array, indices_or_sections, axis=0)

参数:

  • a: 带分割的数组
  • indices_or_sections: 如果是一个整数, 就将该数平均切分, 如果是数组, 为沿轴切分的位置 (左开有闭)
  • axis: 沿着哪个维度进行切分, 默认为 0

例子:

# 创建原始数组
array = np.arange(9)

# 分割数组为 3 等分
splitted_arrays = np.split(array, 3)

# 调试暑促
print("原始数组:", array)
print("分割后的数组:", splitted_arrays)

# 创建原始数组
array = np.arange(9)

# 以索引 2, 5 分割数组
splitted_arrays = np.split(array, [2, 5])

# 调试暑促
print("原始数组:", array)
print("分割后的数组:", splitted_arrays)

# 创建原始数组
array = np.arange(9).reshape(3, 3)

# 横向 3 等分
splitted_arrays = np.split(array, 3, axis=1)

# 调试暑促
print("原始数组:", array, sep="\n")
print("分割后的数组:", splitted_arrays, sep="\n")

输出结果:

原始数组: [0 1 2 3 4 5 6 7 8]
分割后的数组: [array([0, 1, 2]), array([3, 4, 5]), array([6, 7, 8])]
原始数组: [0 1 2 3 4 5 6 7 8]
分割后的数组: [array([0, 1]), array([2, 3, 4]), array([5, 6, 7, 8])]
原始数组:
[[0 1 2]
 [3 4 5]
 [6 7 8]]
分割后的数组:
[array([[0],
       [3],
       [6]]), array([[1],
       [4],
       [7]]), array([[2],
       [5],
       [8]])]

vstack

vstack可以帮助我们将数组进行垂直堆叠.

格式:

import numpy as np

stacked_array = np.vstack((a1, a2, ...))

参数:

  • a1, a2: 需要迭代的数组
  • 返回: 纵向堆叠的数组

例子:

# 原始数组
array1 = np.array([1, 2, 3])
array2 = np.array([4, 5, 6])

# 纵向堆叠
stacked_array = np.vstack((array1, array2))

# 输出结果
print("array1:", array1)
print("array2:", array2)
print("纵向堆叠数组:", stacked_array, sep="\n")

输出结果:

array1: [1 2 3]
array2: [4 5 6]
纵向堆叠数组:
[[1 2 3]
 [4 5 6]]

hstack

hstack可以帮我们将数组进行水平堆叠.

格式:

import numpy as np

stacked_array = np.hstack((a1, a2, ...))

参数:

  • a1, a2: 需要迭代的数组
  • 返回: 横向堆叠的数组

例子:

# 原始数组
array1 = np.array([1, 2, 3])
array2 = np.array([4, 5, 6])
array3 = np.array([7, 8, 9])

# 横向堆叠
stacked_array = np.hstack((array1, array2, array3))

# 输出结果
print("array1:", array1)
print("array2:", array2)
print("array3:", array3)
print("横向堆叠数组:", stacked_array, sep="\n")

输出结果:

array1: [1 2 3]
array2: [4 5 6]
array3: [7 8 9]
横向堆叠数组:
[1 2 3 4 5 6 7 8 9]

数学运算

add 相加

相加

例子:

# 原始数组
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])

# 相加
add_result = np.add(a, b)

# 调试输出
print("数组 a:", a)
print("数组 b:", b)
print("相加结果:", add_result)

subtract 相减

相减

例子:

# 原始数组
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])

# 相减
subtract_result = np.subtract(a, b)

# 调试输出
print("数组 a:", a)
print("数组 b:", b)
print("相减结果:", subtract_result)

输出结果:

数组 a: [1 2 3]
数组 b: [4 5 6]
相减结果: [-3 -3 -3]

multiply 相乘

相乘

例子:

# 原始数组
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])

# 相乘
multiply_result = np.multiply(a, b)

# 调试输出
print("数组 a:", a)
print("数组 b:", b)
print("相乘结果:", multiply_result)

输出结果:

数组 a: [1 2 3]
数组 b: [4 5 6]
相乘结果: [ 4 10 18]

divide 相除

相除

例子:

# 原始数组
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])

# 相除
divide_result = np.divide(a, b)

# 调试输出
print("数组 a:", a)
print("数组 b:", b)
print("相除结果:", divide_result

输出结果:

数组 a: [1 2 3]
数组 b: [4 5 6]
相除结果: [0.25 0.4  0.5 ]
  • 38
    点赞
  • 239
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
NumPyPython中用于科学计算的一个重要库,它提供了高性能的多维数组对象和各种数学函数,是许多数据分析和科学计算任务的基础。在NumPy中,二维数组是最常用的数据结构之一,可以进行各种基本操作。 以下是NumPy二维数组的基本操作: 1. 创建二维数组: - 使用`numpy.array()`函数创建二维数组。 - 使用`numpy.zeros()`或`numpy.ones()`函数创建全零或全一的二维数组。 - 使用`numpy.random.rand()`或`numpy.random.randn()`函数创建随机值的二维数组。 2. 访问元素: - 使用索引访问二维数组中的元素,索引从0开始。 - 可以使用切片操作获取二维数组的子数组。 3. 数组形状: - 使用`numpy.shape`属性获取二维数组的形状,返回一个元组表示行数和列数。 - 使用`numpy.reshape()`函数改变二维数组的形状。 4. 数组操作: - 使用`numpy.transpose()`函数进行转置操作,交换行和列。 - 使用`numpy.concatenate()`函数进行数组的拼接操作。 - 使用`numpy.split()`函数进行数组的分割操作。 5. 数组运算: - 支持基本的数学运算,如加法、减法、乘法和除法。 - 可以使用`numpy.dot()`函数进行矩阵乘法运算。 - 可以使用`numpy.sum()`、`numpy.mean()`等函数计算数组的和、平均值等。 6. 数组迭代: - 可以使用`for`循环迭代二维数组的每个元素。 - 可以使用`numpy.nditer()`函数进行更灵活的迭代操作

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值