cs231n Assignments1-numpy的使用

文章介绍了Numpy在Python中的作用,包括多维数组对象、矩阵乘法、轴操作、广播机制等概念。文中通过示例解释了如何使用np.dot进行矩阵乘法,以及如何理解和应用广播机制。同时,提到了在不同版本的scipy中imread等函数的变化,并展示了使用imageio和OpenCV进行图像读取、调整和保存的代码示例。
摘要由CSDN通过智能技术生成

作者:非妃是公主
专栏:《计算机视觉》
个性签:顺境不惰,逆境不馁,以心制境,万事可成。——曾国藩
在这里插入图片描述

专栏系列文章

Cannot find reference ‘imread‘ in ‘init.py‘

error: (-209:Sizes of input arguments do not match) The operation is neither ‘array op array‘ (where

cs231n-2022-01 Assignments1-numpy的使用

ModuleNotFoundError: No module named ‘cs231n‘

numpy的使用

Numpy是Python中科学计算的核心库。它提供了一个高性能的多维数组对象,以及处理这些数组的工具。如果你已经熟悉MATLAB,你可能会发现这个教程对开始使用Numpy很有用。
运行并阅读cs231n课程网站上提供的示例代码,感觉十分简洁,对入门numpy的初学者来讲,很友好!我也没有系统学习过numpy,所以也读了一下网站上的示例代码。
网址如下:https://cs231n.github.io/python-numpy-tutorial/
有以下地方值得特别注意:
1、矩阵乘法要使用np.dot(a, b),而不是ab,ab计算的是矩阵中对应元素相乘,最后结果的维数和a,b相同。
在这里插入图片描述
2、axis表示sum的对象到底是行,还是列,为0表示sum的行,1表示sum的是列
在这里插入图片描述
3、numpy里面不区分行向量还是列向量,因为v和v.T相同,这也就是说,我们在进行矩阵乘法运算的时候,如果只有一个维度,我们可以不考虑到底是行向量还是列向量。
在这里插入图片描述
4、广播机制,粗俗理解:一个矩阵m和一个数n相加,numpy很聪明,他不会报错,而是聪明的告诉这个矩阵,要给每个元素都加上n,这个过程就叫做广播。同理,我们可以用一个大矩阵加上一个小矩阵(最内层维度的大小)
在这里插入图片描述
如果不是最内层维度,那么就会报错:
在这里插入图片描述
它告诉我们不能广播,维度(4,3)和(4,)不匹配。
5、在运行scipy的代码时,发现报错以下错误
在这里插入图片描述
这其实是由于版本不同导致的,由于我默认安装的为sci的最新版本,而在scipy1.0以上的版本中imread,imsave,imresize都已经被废除了,但是,由于我的python版本为3.9,这导致我无法安装scipy1.0以下的版本,所以,这里我选择了更换python的第三方库来实现同样的功能。

import imageio
import cv2 as cv
from PIL import Image
import numpy as np



# Read an JPEG image into a numpy array
img = imageio.v2.imread('assets/cat.jpg')
print(img.dtype, img.shape)  # Prints "uint8 (400, 248, 3)"

# We can tint the image by scaling each of the color channels
# by a different scalar constant. The image has shape (400, 248, 3);
# we multiply it by the array [1, 0.95, 0.9] of shape (3,);
# numpy broadcasting means that this leaves the red channel unchanged,
# and multiplies the green and blue channels by 0.95 and 0.9
# respectively.
img_tinted = img * [1, 0.95, 0.9]

# Resize the tinted image to be 300 by 300 pixels.
# img_tinted = imresize(img_tinted, (300, 300))
# np.array(Image.fromarray(img_tinted).resize((300, 300)))
img_tinted = cv.resize(img, (300, 300), interpolation=cv.INTER_AREA)  

# Write the tinted image back to disk
cv.imwrite("assets/cat_tinted.jpg", img_tinted)

在工作目录的assets文件夹中,运行结果如下:
在这里插入图片描述
可以看到,小猫咪变胖了,而且颜色也有所变化,这主要和我们rgb三通道缩放的倍数有关(img_tinted = img * [1, 0.95, 0.9])
后面还有matplotlib,图片显示等方面的实例代码,很简单,也没有遇到问题,在此就不再一一罗列了。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Cherries Man

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值