numpy安装与常用的属性方法

最近两个月没有更新博客是因为我在尝试使用keras进行图像识别,然后里面就使用到了numpy,今天我就来写一下numpy为什么在机器学习领域那么使用的那么多,现在我们先来安装一下numpy

pip install numpy

简单介绍numpy

numpy 底层采用c 语言编写 它的主要的使用领域是科学技术领域,非常适合做矩阵运算
什么是矩阵? 简单说一下,我们都知道在任何一门编程语言里面都有列表或者数组的概念
也可以叫做向量vector 数组或者列表是一维的就像这个样子[1, 2, 3, 4, 5]而矩阵呢,你可以把它理解为多维的数组大概像这样的[[1 2 3], [4 5 6]] 这就叫做矩阵,而numpy 非常适合做矩阵运算。那这个numpy又是如何跟图像识别关联起来的呢,首先我们来看一张图片,如下图

楼楼
在我们眼里的图片,可以看到是一只猫,但是计算机如果要做识别,它要怎么看这个图呢。
答案就是把这个图片转为计算机可以识别的样子。怎么转呢,什么样才是计算机可以识别的样子
这里我们就需要知道计算机要怎么看图了,我们都知道图像其实是由一个一个的像素点组成的,我们把
像素点使用数值来表达怎么样?使用0-255表示像素点,颜色越深数值越高,反之越浅,就像下面的图片
人类的眼中是这样的(图片来自知乎:https://www.zhihu.com/question/39022858)
8
计算机眼中是这样的
在这里插入图片描述

现在我们知道了计算机可以识别的图像是什么样的了,现在需要解决的问题是,我们有图像了,如何把它转成
计算机可以识别的样子,这里就需要使用python的视觉处理模块啦 cv2 模块
现在我们把刚才是图片转成计算机可以识别的样子
mc

看到了吗,图像被转换成了矩阵!这样就把numpy和机器学习关联起来了,实际上tensorflow等框架在做图像识别的时候,输入的数据就是这样的图像矩阵!! 好啦扯远啦。接下来继续讲numpy
numpy 支持的数据类型
dtype

安装numpy(环境Linux)

pip install numpy

常用的属性

1 查看矩阵的数据类型
dtype
比如我们查看刚才我们把图片转换成的矩阵数据类型是什么

import numpy as np
import cv2
image = cv2.imread("cat.jpg")
image = np.array(image)
image.dtype

## out ##

dtype('uint8')

2 查看矩阵的大小
shape

image.shape
## out ##
(407, 430, 3)
这个407 和 430 代表图像的宽度和高度, 3 代表RGB 三颜色在机器学习里面叫做通道(channel)如果图像是黑白色的 这个就是 1

在这里插入图片描述

3 查看矩阵的深度
ndim

image.ndim
## out ##

3

常用方法

1 生成随机矩阵
根据给定维度生成[0,1)之间的数据,包含0,不包含1

numpy.random.rand(3, 2) 
## out ##
[[0.38723131 0.56080535 0.28986393]
 [0.52948079 0.49717751 0.42280896]
 [0.51374604 0.56677323 0.90121968]]

==2 生成 一维矩阵 ==
arange 这个和python 里面的range 方法差不多

numpy.arange(6)
## out ##
array([0, 1, 2, 3, 4, 5])

3 将arange一维矩阵拆分成 n 维矩阵
reshape

numpy.arange(6).reshape((2, 3))

## out ##

array([[0, 1, 2],
       [3, 4, 5]])

4 创建矩阵

array 创建矩阵时里面的元素数据类型可以制定,使用参数dtype 进行指定

array = numpy.array([[1, 2], [3, 4]])

5 求矩阵最大值,最小值,平均值
max
min
mean

numpy.max(array)
numpy.min(array)
numpy.mean(array)

## out ##
4
1
2.5

6 获取矩阵中最大值和最小值的索引
argmax
argmin
例如我现在有个矩阵 a =
[[1 2 3]
[4 5 6]]

我们可以看出来这个矩阵当中最大值是 6 最小值是 0 因此可以这样获取

numpy.argmax(a)
numpy.argmin(a)
## out ##
5
0

我们可以指定 axis 根据行 还是根据列来获取最大值和最小值的索引

numpy.argmax(a, axis=0)
numpy.argmin(a, axis=0)
## out ##
array([1, 1, 1])
array([0, 0, 0])
# ----------------------------------------
numpy.argmax(a, axis=1)
numpy.argmin(a, axis=1)
## out ##
array([2, 2])
array([0, 0])

axis=0 的时候是根据来取每一列的最大 或者最小值的 如下图
axis0

当axis=1的时候是根据 来获取的每一行最大或者最小值 如下图
axis1

7 数据类型转换
astype
可以将矩阵从一种类型转换到另外一种类型
例如我现在的矩阵 a
[[1 2 3]
[4 5 6]]
现在的类型是 int64 假如我想把它转换成 float64的类型
f64 = a.astype('float64')

8 矩阵倒置 将行变成列,列变成行
T
例如我们有数组 a
[[1 2 3]
[4 5 6]]

t= a.T
##out##
array([[1, 4],
      [2, 5],
      [3, 6]])
#行变列
t.T
##out##
array([[1, 2, 3],
      [4, 5, 6]])

矩阵运算

矩阵相加
矩阵相减
矩阵相乘
矩阵相除
例如我们现在有两个矩阵 a b
a =
[[1 2 3]
[4 5 6]]
b =
[[7 8 9]
[10 11 12]]

a + b
##out##
array([[ 8, 10, 12],
       [14, 16, 18]])

b - a 
##out##
array([[6, 6, 6],
       [6, 6, 6]])
      
 a * b
 ##out##
 array([[ 7, 16, 27],
       [40, 55, 72]])
 b / a
 ##out##
 array([[7. , 4. , 3. ],
       [2.5, 2.2, 2. ]])

还可以让矩阵中的每个值加减乘除某个数
例如

b / 2
##out##
array([[3.5, 4. , 4.5],
       [5. , 5.5, 6. ]])

矩阵内积
dot
在卷积神经网络中卷积层用到内积运算

来看例子
假如我现在有矩阵
a = [0, 1, 2, 3, 4, 5, 6]
b = [0, 1, 2, 3, 4, 5, 6]
则两个的内积

dot = np.dot(a, b)
##out##
91
# 其大概运算就是 两个矩阵 每一列相乘 加上下一列相乘
0 × 0 + 1 x 1 + 2 x 2 + 3 x 3 + 4 x 4 + 5 x 5 + 6 x 6 = 96

以上就是numpy 的一些常用属性和方法,后续我会再回来补充如何使用keras进行图像识别,回见啦

在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
NumPy中最基本的数据类型是`ndarray`,即N维数组,它除了可以存储多维数组外,还提供了丰富的属性方法,方便对数组进行各种操作。下面列举了`ndarray`的常用属性方法: **属性:** 1. `ndarray.shape`:表示数组的形状(即每个维度的大小),返回一个元组。 2. `ndarray.ndim`:表示数组的维度数。 3. `ndarray.size`:表示数组中元素的总个数。 4. `ndarray.dtype`:表示数组元素的数据类型。 5. `ndarray.itemsize`:表示数组中每个元素的字节大小。 6. `ndarray.data`:包含实际数组元素的缓冲区。 **方法:** 1. 数组创建 - `np.array()`:从列表、元组等序列对象创建数组。 - `np.zeros()`:创建全零数组。 - `np.ones()`:创建全一数组。 - `np.empty()`:创建空数组。 - `np.arange()`:创建一维数组,类似于Python的range函数。 - `np.linspace()`:创建指定范围内的等间隔一维数组。 - `np.eye()`:创建单位矩阵或者说对角线上元素为1的矩阵。 2. 数组操作 - 索引和切片:与Python中的列表类似,可以使用索引和切片来访问数组元素。 - 数组形状变换:`reshape()`、`resize()`、`transpose()`、`flatten()`等方法可以改变数组的形状。 - 数组连接:`concatenate()`、`stack()`、`hstack()`、`vstack()`等方法可以实现数组的连接操作。 - 数组拆分:`split()`、`hsplit()`、`vsplit()`等方法可以实现数组的拆分操作。 3. 数组计算 - 数组运算:支持加、减、乘、除、幂运算等基本算术运算。 - 通用函数:支持绝对值、三角函数、指数和对数函数等各种通用函数。 - 统计函数:支持计算数组的平均值、标准差、方差、最大值、最小值等统计函数。 4. 数组排序 - `sort()`、`argsort()`、`lexsort()`、`partition()`等方法可以实现数组的排序操作。 5. 数组文件读写 - `save()`、`savez()`、`load()`等函数可以实现NumPy数组的文件读写操作。 以上是`ndarray`的常用属性方法,掌握这些属性方法可以方便地对数组进行各种操作,实现各种数学和科学计算任务。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值