NumPy(Numerical Python) 是 Python 语言中做科学计算的基础库。重在于数值计算,也是大部分Python科学计算库的基础,多用于在大型、多维数组上执行的数值运算。

1.numpy数组的多种创建方式

1.1使用np.array()创建

使用array创建一个一维数组:

import numpy as np
arr1 = np.array([1,2,3])

使用array创建一个多维数组;

import numpy as np
arr1 = np.array([1,2,3],[1,2,3])

1.2使用plt创建

使用python中matploylib库,这个库中有一个imread方法,可以读取文件夹的图片,并转化为多维数组的形式存储起来,并且可以通过操作数组的方式对图片颜色进行操作。

import matplotlib.pyplot as plt
arr2 = plt.imread("1.png")
arr2

1.3使用np的routine函数创建

  • zero()
  • ones()
  • linespace()
  • arange()
  • random系列
arr3 = np.zeros(shape = (3,4))#创建一个三维数组,所有元素都为0
arr4 = np.ones(shape = (3,4))#创建一个三维数组,所有元素都为1
arr5 = np.linspace(1,100,num = 20)#创建一个等差数列一维数组
arr6 = np.arange(1,10)#创建一个1-10的数组
arr7 = np.random.randint(1,10,size = (3,4))#创建一个三维随机数数组

2.numpy的常用属性

2.1shape

shape - 这是一个用于表示数组形状的元组。它告诉我们每个维度的大小。例如,对于一个二维数组,形状将告诉我们行数和列数。

nums1 = np.array([[1,2,3],[4,5,6]])
print(nums1.shape)

2.2ndim

这是表示数组维度数量的整数。一个一维数组的 ndim 为 1,二维数组为 2,以此类推。

nums2 = np.array([[1,2,3],[4,5,6]])
nums2.ndim

2.3size

这是一个整数,表示数组中元素的总数。它是所有维度大小的乘积。

nums3 = np.array([[1,2,3],[4,5,6]])
nums3.size

2.4dtype

这是一个对象,表示数组中元素的数据类型。例如,整数、浮点数或自定义数据类型。

nums4 = np.array([[1,2,3],[4,5,6]])
nums4.dtype

3.numpy的索引和切片

索引操作和列表同理

3.1切出前两列数据

arr = np.random.randint(1,100,size=(5,6))
arr[:,0:2]#取出前两列的数据

3.2切出前两行数据

arr[0:2]#取出前两行的数据

3.3切出前两行的前两列的数据

arr[0:2,0:2]

3.4数组数据翻转

arr[::-1]#将数组行倒置
arr[::,::-1]#将数组列倒置
arr[::-1,::-1]#将数组行倒置和列倒置

3.5练习:将一张图片上下左右进行翻转操作

arr_image = plt.imread("1.png")
arr_image = arr_image[::-1]
plt.imshow(arr_image)

3.6练习:将图片进行指定区域的裁剪

plt.imshow(arr_image[60:100,200:500,])

4.统计&聚合&矩阵操作

4.1常用的统计函数

  • numpy.amin() 和 numpy.amax(),用于计算数组中的元素沿指定轴的最小、最大值。
  • numpy.ptp():计算数组中元素最大值与最小值的差(最大值 - 最小值)。
  • numpy.median() 函数用于计算数组 a 中元素的中位数(中值)
  • 标准差std():标准差是一组数据平均值分散程度的一种度量。
    • 公式:std = sqrt(mean((x - x.mean())**2))
    • 如果数组是 [1,2,3,4],则其平均值为 2.5。 因此,差的平方是 [2.25,0.25,0.25,2.25],并且其平均值的平方根除以 4,即 sqrt(5/4) ,结果为 1.1180339887498949。
  • 方差var():统计中的方差(样本方差)是每个样本值与全体样本值的平均数之差的平方值的平均数,即 mean((x - x.mean())** 2)。换句话说,标准差是方差的平方根。
num.std()
num.var()

4.2常用的聚合操作

sum,max,min,mean

num = np.array([[69, 80,  7, 90, 31, 44],
[37, 57, 26, 92, 91, 34],
[13, 16, 93, 54, 87, 34],
[ 5, 16, 47, 66, 51, 12],
[54, 63, 20, 11, 94, 88]])
num.sum(axis = 1)
num.max(axis = 1)

4.3常用的矩阵操作

  • NumPy 中包含了一个矩阵库 numpy.matlib,该模块中的函数返回的是一个矩阵,而不是 ndarray 对象。一个 的矩阵是一个由行(row)列(column)元素排列成的矩形阵列。
  • numpy.matlib.identity() 函数返回给定大小的单位矩阵。单位矩阵是个方阵,从左上角到右下角的对角线(称为主对角线)上的元素均为 1,除此以外全都为 0。
arr.T#转置矩阵
#矩阵相乘
a1 = np.array([[2,1],[4,3]])
a2 = np.array([[1,2],[1,0]])
np.dot(a1,a2)

numpy的一些基本操作的更多相关文章

  1. numpy库常用基本操作

    NumPy数组的维数称为秩(rank),一维数组的秩为1,二维数组的秩为2,以此类推.在NumPy中,每一个线性的数组称为是一个轴(axes),秩其实是描述轴的数量.比如说,二维数组相当于是一个一维数 ...

  2. Numpy 数据类型和基本操作

    Numpy 数据类型 bool 用一位存储的布尔类型(值为TRUE或FALSE) inti 由所在平台决定其精度的整数(一般为int32或int64) int8 整数,范围为128至127 int1 ...

  3. Python Numpy 矩阵级基本操作(2)

    1.开方与求e指数 import numpy as np from numpy.matlib import randn print "Test sqrt and exp" arr ...

  4. Python Numpy 矩阵级基本操作(1)

    NumPy的操作介绍 import numpy as np #导入numpy包,简写为np print "Generate 1*10 matrix" a=np.arange(1,1 ...

  5. Numpy | ndarray数组基本操作

    搞不懂博客园表格的排版... 说明: 0 ndarray :多维数组对象 1 np :import numpy as np 2 nda :表示数组的名称 1 生成数组 函数名 描述 np.array ...

  6. 第四十篇 入门机器学习——Numpy.array的基本操作——向量及矩阵的运算

    No.1. Numpy.array相较于Python原生List的性能优势 No.2. 将向量或矩阵中的每个元素 + 1 No.2. 将向量或矩阵中的所有元素 - 1 No.3. 将向量或矩阵中的所有 ...

  7. 第三十八篇 入门机器学习——Numpy.array的基本操作——查看向量或矩阵

    No.1. 初始化状态 No.2. 通过ndim来查看数组维数,向量是一维数组,矩阵是二维数组 No.3. 通过shape来查看向量中元素的个数或矩阵中的行列数 No.4. 通过size来查看数组中的 ...

  8. 玩转NumPy数组

    一.Numpy 数值类型 1.前言:Python 本身支持的数值类型有 int(整型, long 长整型).float(浮点型).bool(布尔型) 和 complex(复数型).而 Numpy 支持 ...

  9. Numpy学习笔记(上篇)

    目录 Numpy学习笔记(上篇) 一.Jupyter Notebook的基本使用 二.Jpuyter Notebook的魔法命令 1.%run 2.%timeit & %%timeit 3.% ...

  10. 第三十七篇 入门机器学习——Numpy基础

    No.1. 查看numpy版本 No.2. 为了方便使用numpy,在导入时顺便起个别名 No.3. numpy.array的基本操作:创建.查询.修改 No.4. 用dtype查看当前元素的数据类型 ...

随机推荐

  1. centos 查看jdk 安装路径

    命令行: which java 输出: /usr/bin/java 再次输入: ls -lr /usr/bin/java 输出: lrwxrwxrwx 1 root root 22 4月 26 17: ...

  2. disconf分布式配置管理(一) 安装与配置

    一.背景 在生产部署过程中,遇到以下问题: 1.由于节点较多,每次增量修改配置文件后都需要每个节点替换配置文件. 2.有些动态配置修改后,需要重启服务. 二.解决方案 1.使用linux文件共享配置文 ...

  3. 全志T113s3工业开发板文章汇总

    全志T113s3工业开发板 T113开发交流QQ群:120575746 交流论坛:https://forums.100ask.net/c/aw/ 文章目录汇总 教程共计7章,下面是章节汇总:第0章_T ...

  4. 2023 PTA天梯赛补题(L1 & L2)

    2023 天梯赛 L1 & L2 补题 L1 L1-089 最好的文档 输入输出题 #include<bits/stdc++.h> using namespace std; int ...

  5. 聊一聊SQL优化

    晚上睡不着,脑子里总想着一些问题,试着写一写对于SQL查询优化的见解. 首先,数据库有自己的查询优化器,执行一条查询SQL优化器会选择最优的方式(不走索引.走索引.走哪个索引), 所以索引不是越多越好 ...

  6. Graphics2D绘图方法总结

    一.简介 在开发中可能会遇到这样一类场景,业务复杂度不算太高,技术难度不算太深,但是做起来就很容易把人整破防,伤害很高侮辱性很强的:绘图. 绘图最怕有人挑刺:这里变形,那里不对,全图失真. 最近在处理 ...

  7. [kernel] 带着问题看源码 —— 脚本是如何被 execve 调用的

    前言 在<[apue] 进程控制那些事儿>一文的"进程创建-> exec -> 解释器文件"一节中,曾提到脚本文件的识别是由内核作为 exec 系统调用处理 ...

  8. Parallels Desktop 虚拟机网络地址

    bridge100 是宿主机在共享网络中的地址 bridge101 是宿主机在 Host-Only 网络中的地址 查询宿主机 IP 地址 $ ip addr show # 共享网络(默认) bridg ...

  9. IP服务正常,域名服务异常,报400 badrequest

    IP的情况下,访问接口都正常,使用域名访问,报错400 badrequest 经确认,ssl配置无问题,证书文件本身无问题 最后查出来原因,是域名格式的问题,原域名中包含_,需要修改为- 排查过程: ...

  10. 【题目全解】ACGO挑战赛#8

    前言:本次挑战赛的难度相较于前面几期有所提升,主要还是因为集训的关系,出题组的成员们没有充裕的时间想原创题目(so,只能原模原样搬运某一场 ABC 的考试了.)Anyway,AK 了就行. 备注:由于 ...