写点什么

Python 操作 Numpy 模块

  • 2022-11-30
    北京
  • 本文字数:3127 字

    阅读完需:约 10 分钟

Python操作Numpy模块

1.Numpy 介绍

numpy 官方文档介绍:https://docs.scipy.org/doc/numpy/reference/?v=20190307135750


Numpy 是 Numerical Python extensions 的缩写,字面意思是 Python 数值计算扩展


Numpy 是高性能科学计算和数据分析的基础包。它也是 pandas 等其他数据分析的工具的基础,基本所有数据分析的包都用过它。NumPy 为 Python 带来了真正的多维数组功能,并且提供了丰富的函数库处理这些数组。它将常用的数学函数都支持向量化运算,使得这些数学函数能够直接对数组进行操作

2.Numpy 安装

  1. window 电脑点击 win 键+R,输入:cmd



2.安装 numpy,pip 命令安装 ,我们使用豆瓣的镜像源来安装


pip install numpy -i http://pypi.douban.com/simple --trusted-host pypi.douban.com
复制代码



3.导包


import numpy as np
复制代码

3.Numpy 模块练习

numpy 数组即 numpy 的 ndarray 对象,创建 numpy 数组就是把一个列表传入 np.array()方法。

3.1 创建数组

创建一维、二维、三维 ndarray 对象


# @Time     : 2022/11/24 19:25# @Author   : hyh# @File     : Numpy模块练习.py# @Software : PyCharm
import numpy as np# np.array? 相当于pycharm的ctrl+鼠标左键
# 创建一维的ndarray对象arr = np.array([1, 2, 3])print(arr, type(arr))

# 创建二维的ndarray对象print(np.array([[1, 2, 3], [4, 5, 6]]))
# 创建三维的ndarray对象print(np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]))
复制代码


执行结果:



3.2 获取数组

由于 numpy 数组是多维的,对于二维的数组而言,numpy 数组就是既有行又有列。


注意:对于 numpy 我们一般多讨论二维的数组。


arr = np.array([[1, 2, 3], [4, 5, 6]])print(arr)
# 获取numpy数组的行和列构成的数组print(arr.shape)
# 获取numpy数组的行print(arr.shape[0])
# 获取numpy数组的列print(arr.shape[1])
复制代码


执行结果:



[[1 2 3] [4 5 6]]
获取numpy数组的行和列构成的数组(2, 3)
获取numpy数组的行2
获取numpy数组的列3
复制代码

3.3 切割数组

切分 numpy 数组类似于列表的切割,但是与列表的切割不同的是,numpy 数组的切割涉及到行和列的切割,但是两者切割的方式都是从索引 0 开始,并且取头不取尾。


# @Time     : 2022/11/24 19:45# @Author   : hyh# @File     : 切割numpy数组.py# @Software : PyCharm
import numpy as nparr = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]])print(arr)
print('取所有元素')# 取所有元素print(arr[:, :])

print('取第一行的所有元素')# 取第一行的所有元素print(arr[:1, :])
print('取第一列的所有元素')# 取第一列的所有元素print(arr[:, :1])
print('取第一列的所有元素')# 取第一列的所有元素print(arr[(0, 1, 2), 0])
print('取第一行第一列的元素')# 取第一行第一列的元素print(arr[(0, 1, 2), 0])
print('取第一行第一列的元素')# 取第一行第一列的元素print(arr[0, 0])
print('取大于5的元素,返回一个数组')# 取大于5的元素,返回一个数组print(arr[arr > 5])
print('numpy数组按运算符取元素的原理,即通过arr > 5生成一个布尔numpy数组')# numpy数组按运算符取元素的原理,即通过arr > 5生成一个布尔numpy数组print(arr > 5)
复制代码


执行结果:


"D:\Program Files\Python\Python36\python.exe" D:/E/PythonWork/Pytest2022/CSDN打卡/切割numpy数组.py[[ 1  2  3  4] [ 5  6  7  8] [ 9 10 11 12]]取所有元素[[ 1  2  3  4] [ 5  6  7  8] [ 9 10 11 12]]取第一行的所有元素[[1 2 3 4]]取第一列的所有元素[[1] [5] [9]]取第一列的所有元素[1 5 9]取第一行第一列的元素[1 5 9]取第一行第一列的元素1取大于5的元素,返回一个数组[ 6  7  8  9 10 11 12]numpy数组按运算符取元素的原理,即通过arr > 5生成一个布尔numpy数组[[False False False False] [False  True  True  True] [ True  True  True  True]]
Process finished with exit code 0
复制代码

3.4 替换数组

numpy 数组元素的替换,类似于列表元素的替换,并且 numpy 数组也是一个可变类型的数据,即如果对 numpy 数组进行替换操作,会修改原 numpy 数组的元素,所以下面我们用.copy()方法举例 numpy 数组元素的替换。


# @Time     : 2022/11/24 19:53# @Author   : hyh# @File     : numpy数组元素替换.py# @Software : PyCharm
import numpy as np
arr = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]])print(arr)
print('取第一行的所有元素,并且让第一行的元素都为0')# 取第一行的所有元素,并且让第一行的元素都为0arr1 = arr.copy()arr1[:1, :] = 0print(arr1)
print('取所有大于5的元素,并且让大于5的元素为0')# 取所有大于5的元素,并且让大于5的元素为0arr2 = arr.copy()arr2[arr > 5] = 0print(arr2)
print('对numpy数组清零')# 对numpy数组清零arr3 = arr.copy()arr3[:, :] = 0print(arr3)
复制代码


执行结果:


"D:\Program Files\Python\Python36\python.exe" D:/E/PythonWork/Pytest2022/CSDN打卡/numpy数组元素替换.py[[ 1  2  3  4] [ 5  6  7  8] [ 9 10 11 12]]取第一行的所有元素,并且让第一行的元素都为0[[ 0  0  0  0] [ 5  6  7  8] [ 9 10 11 12]]取所有大于5的元素,并且让大于5的元素为0[[1 2 3 4] [5 0 0 0] [0 0 0 0]]对numpy数组清零[[0 0 0 0] [0 0 0 0] [0 0 0 0]]
Process finished with exit code 0
复制代码

3.5 合并数组

numpy 数组的合并


# @Time     : 2022/11/24 20:39# @Author   : hyh# @File     : numpy数组合并.py# @Software : PyCharm
import numpy as np
arr1 = np.array([[1, 2], [3, 4], [5, 6]])print(arr1)
arr2 = np.array([[7, 8], [9, 10], [11, 12]])print(arr2)
print('合并两个numpy数组的行,注意使用hstack()方法合并numpy数组,numpy数组应该有相同的行,其中hstack的h表示horizontal水平的')# 合并两个numpy数组的行,注意使用hstack()方法合并numpy数组,numpy数组应该有相同的行,其中hstack的h表示horizontal水平的print(np.hstack((arr1, arr2)))
print('合并两个numpy数组,其中axis=1表示合并两个numpy数组的行')# 合并两个numpy数组,其中axis=1表示合并两个numpy数组的行print(np.concatenate((arr1, arr2), axis=1))
print('合并两个numpy数组的列,注意使用vstack()方法合并numpy数组,numpy数组应该有相同的列,其中vstack的v表示vertical垂直的')# 合并两个numpy数组的列,注意使用vstack()方法合并numpy数组,numpy数组应该有相同的列,其中vstack的v表示vertical垂直的print(np.vstack((arr1, arr2)))
print('合并两个numpy数组,其中axis=0表示合并两个numpy数组的列')# 合并两个numpy数组,其中axis=0表示合并两个numpy数组的列print(np.concatenate((arr1, arr2), axis=0))
复制代码


执行结果:


"D:\Program Files\Python\Python36\python.exe" D:/E/PythonWork/Pytest2022/CSDN打卡/numpy数组合并.py[[1 2] [3 4] [5 6]][[ 7  8] [ 9 10] [11 12]]合并两个numpy数组的行,注意使用hstack()方法合并numpy数组,numpy数组应该有相同的行,其中hstack的h表示horizontal水平的[[ 1  2  7  8] [ 3  4  9 10] [ 5  6 11 12]]合并两个numpy数组,其中axis=1表示合并两个numpy数组的行[[ 1  2  7  8] [ 3  4  9 10] [ 5  6 11 12]]合并两个numpy数组的列,注意使用vstack()方法合并numpy数组,numpy数组应该有相同的列,其中vstack的v表示vertical垂直的[[ 1  2] [ 3  4] [ 5  6] [ 7  8] [ 9 10] [11 12]]合并两个numpy数组,其中axis=0表示合并两个numpy数组的列[[ 1  2] [ 3  4] [ 5  6] [ 7  8] [ 9 10] [11 12]]
Process finished with exit code 0
复制代码

3.6 numpy 数组的常用属性



发布于: 2022-11-30阅读数: 27
用户头像

一边做一边变得优秀,加油呀 2022-09-19 加入

大家好,我是小鱼新人来报道哈。 CSDN,阿里云专家.....

评论

发布
暂无评论
Python操作Numpy模块_Numpy_度假的鱼🐟_InfoQ写作社区