# numpy在数字图像处理中的应用

### 文章目录

A.dtype, A.shape, A.ndim


def show(img):
if img.ndim == 2:
plt.imshow(img, cmap='gray')
else:
plt.imshow(cv.cvtColor(img,cv.COLOR_RGB2BGR))
plt.plot()

apple = cv.imread('./pic/apple.jpg')
show(apple)


apple = cv.imread('./pic/apple.jpg',0)
show(apple)


np.array([[1]])
np.uint8([1])
np.arange(2,10,2)
np.linspace(0, 2*pi, 100)
A = np.zeros((4,3), dtype=np.uint8)
B = np.ones((2,2), dtype=np.float32)
I = np.eye(4)
I2 = np.identity(6)
C = np.random.randint(0, 10, (4,4))


A.reshape()
A.flatten(), A.ravel()
A.T
A.transpose()
np.hstack([A, B])


A.max()
A.min()
A.mean()
np.max()
np.min()
np.mean()


np.power(A, 2)
np.sqrt()
np.log(), np.log2(), np.log10()
A.dot(x)


cv.imread(path)
cv.imwrite(path, img)

cv.imshow("roi", img)
cv.waitKey(0)
cv.destroyAllWindows()

plt.imshow(img)
plt.show()


plt.plot(x,y)
plt.hist(array)

import numpy as np


A = np.random.randint(0,9,(3,3))
print('A.dtype =', A.dtype)
print('A.ndim =', A.shape)
print('A.ndim =', A.ndim)

A1 = A.reshape((1,9))
print(A1)

A1 = A1.astype(np.float32)

A.dtype = int32
A.ndim = (3, 3)
A.ndim = 2
[[2 2 0 7 8 1 5 7 4]]


# 矩阵创建

np.array([[1]])
np.uint8([1])
np.arange(2,10,2)
np.linspace(0, 2*pi, 100)
np.zeros((4,3), dtype=np.uint8)
np.ones((2,2), dtype=np.float32)
np.eye(4)
np.identity(6)
np.random.randint(0, 10, (4,4))


[En]

Let’s use these functions in a simple way.

x = np.array([1,2,3],dtype=float)
print(x)
print(x.dtype)

[1. 2. 3.]
float64

y = np.uint8([1,1,1])
print(y)
print(y.dtype)

[1 1 1]
uint8

np.arange(2,10,2)

array([2, 4, 6, 8])

np.linspace(0,10,11)

array([ 0.,  1.,  2.,  3.,  4.,  5.,  6.,  7.,  8.,  9., 10.])


np.zeros((2,3),dtype = int)

array([[0, 0, 0],
[0, 0, 0]])


np.ones((3,3),dtype=np.float32)

array([[1., 1., 1.],
[1., 1., 1.],
[1., 1., 1.]], dtype=float32)


np.identity(4)

array([[1., 0., 0., 0.],
[0., 1., 0., 0.],
[0., 0., 1., 0.],
[0., 0., 0., 1.]])


np.random.randint(0,256,(10,10),dtype=np.uint8)

array([[ 38, 240, 221, 175, 205,  32, 142, 207, 183, 215],
[ 23, 200, 108, 171, 101, 213, 182, 141, 220, 144],
[103, 112, 187,  29,  20, 107, 173, 236, 192, 160],
[ 76, 196,  71,   3, 217, 169,   7, 127,  74, 223],
[ 15,  75, 177, 181, 175,  17, 148,  82,  48, 246],
[228,  41, 161, 228,   5, 154, 205,   0, 103,   5],
[240, 227, 231, 217, 213, 218,  28,   0,  90, 156],
[118, 140,  93, 107,  43,  90,  54,  78, 233, 233],
[ 92,  16, 111, 253, 137,  87,  55, 166,  72,  63],
[127,  95, 148,   7,  70,  56,  91,  26, 184, 112]], dtype=uint8)


# 矩阵转换

A.reshape()

A.flatten(), A.ravel()

A.T

A.transpose()

np.hstack([A, B])


A = np.ones((3,3),dtype=np.uint8)
print(A)

[[1 1 1]
[1 1 1]
[1 1 1]]


reshape函数是numpy中一个很常用的函数，作用是在不改变矩阵的数值的前提下修改矩阵的形状

print(A.reshape((1,9)))
print(A.reshape((-1,9)))

[[1 1 1 1 1 1 1 1 1]]
[[1 1 1 1 1 1 1 1 1]]


A.T or A.transpose()将这个矩阵装置

B = np.random.randint(0,10,(3,3))
print(B)
print(B.T)
print(B.transpose())

[[4 8 5]
[0 5 9]
[3 1 1]]
[[4 0 3]
[8 5 1]
[5 9 1]]
[[4 0 3]
[8 5 1]
[5 9 1]]


hstack()是横向拉伸,源于horizontal,横向这个词 vstack()是纵向排列,源于vertical纵向

print(np.hstack([A,B]))

[[1 1 1 4 8 5]
[1 1 1 0 5 9]
[1 1 1 3 1 1]]

print(np.vstack([A,B]))

[[1 1 1]
[1 1 1]
[1 1 1]
[4 8 5]
[0 5 9]
[3 1 1]]


# 基本操作


B = A + 2
C = A / 2

print(A)
print(B)
print(C)

[[1 1 1]
[1 1 1]
[1 1 1]]
[[3 3 3]
[3 3 3]
[3 3 3]]
[[0.5 0.5 0.5]
[0.5 0.5 0.5]
[0.5 0.5 0.5]]


B = np.power(A, 0.5)
C = np.sqrt(A)
D = np.log(A)

print(B)
print(C)
print(D)

[[1. 1. 1.]
[1. 1. 1.]
[1. 1. 1.]]
[[1. 1. 1.]
[1. 1. 1.]
[1. 1. 1.]]
[[0. 0. 0.]
[0. 0. 0.]
[0. 0. 0.]]


axis的重点在于方向，而不是行和列。1表示横轴，方向从左到右；0表示纵轴，方向从上到下。


ma1 = A.max()
ma2 = np.max(A)

mi1 = A.min(axis=0)
mi2 = np.min(A, axis=0)

me1 = A.mean(axis=1)
me2 = np.mean(A, axis=1)


print(A)
print(A.T)
print(A.transpose())
print(np.transpose)

[[1 1 1]
[1 1 1]
[1 1 1]]
[[1 1 1]
[1 1 1]
[1 1 1]]
[[1 1 1]
[1 1 1]
[1 1 1]]
<function transpose at 0x00000193da314940>
</function>


# 矩阵运算

x = np.array([1, 1, 2])

z1 = A * x
z2 = A @ x
z3 = A.dot(x)

print(z1)
print(z2)
print(z3)

[[1 1 2]
[1 1 2]
[1 1 2]]
[4 4 4]
[4 4 4]

B = np.ones((3,3), dtype=int)

Z1 = A * B
Z2 = A @ B
Z3 = A.dot(B)

print(Z1)
print(Z2)
print(Z3)

[[1 1 1]
[1 1 1]
[1 1 1]]
[[3 3 3]
[3 3 3]
[3 3 3]]
[[3 3 3]
[3 3 3]
[3 3 3]]


# 元素获取

u = np.arange(2, 10, 2)
print(u)
print(u[0], u[1:4])

[2 4 6 8]
2 [4 6 8]


print(A)
print(A[0])
print(A[0, :])

[[1 1 1]
[1 1 1]
[1 1 1]]
[1 1 1]
[1 1 1]


print(A[:, 0])

[1 1 1]

E = np.random.randint(0, 10, (5,5), dtype=int)
E

array([[5, 4, 9, 1, 7],
[9, 8, 6, 2, 1],
[1, 5, 2, 1, 1],
[5, 4, 6, 0, 4],
[4, 1, 4, 2, 5]])


E1 = E[0:3, 0:3].copy()
print(E1)

[[5 4 9]
[9 8 6]
[1 5 2]]


e1 = E[0][0]
e2 = E[0, 0]
print(e1, e2)

5 5


E1[0,0] = 0
print(E1)

[[0 4 9]
[9 8 6]
[1 5 2]]

E1[0,:] = np.array([1,1,1])
print(E1)

[[1 1 1]
[9 8 6]
[1 5 2]]

E1 > 2

array([[False, False, False],
[ True,  True,  True],
[False,  True, False]])

E1.flatten()

array([1, 1, 1, 9, 8, 6, 1, 5, 2])


# 读取显示图像

import cv2 as cv
import matplotlib.pyplot as plt
import numpy as np

img1 = cv.imread('./pic/cat500x480.jpg')


cv.imshow("bear", img1)
cv.waitKey(0)
cv.destroyAllWindows()


plt.imshow(img1)
plt.show()


img1 = cv.cvtColor(img1, cv.COLOR_BGR2RGB)
plt.imshow(img1)
plt.show()


img2 = cv.imread('./pic/cat500x480.jpg', 0)
plt.imshow(img2)
plt.show()


img2 = cv.imread('./pic/cat500x480.jpg', 0)
plt.imshow(img2,cmap='gray')
plt.show()


print(img1.ndim, img2.ndim)

3 2


def show(img):
if img.ndim == 2:
plt.imshow(img, cmap='gray')
else:
plt.imshow(cv.cvtColor(img,cv.COLOR_RGB2BGR))
plt.plot()

apple = cv.imread('./pic/apple.jpg')
show(apple)


# 简单绘图

import numpy as np
import matplotlib.pyplot as plt

x = np.arange(2,20)
y = 2 * x + np.random.randint(5,20,18)
plt.plot(x,y,'*-',color='r')
plt.show()


x = np.linspace(0,1,100)
y1 = np.power(x,0.5)
y2 = x
y3 = np.power(x,1.5)

plt.plot(x,y1,label='0.5')
plt.plot(x,y2,label='1.0')
plt.plot(x,y3,label='1.5')
plt.legend()
plt.xlabel('r')
plt.ylabel('s')
plt.grid()
plt.xlim([0,1])
plt.ylim([0,1])
plt.show()


a = np.random.randint(0, 10, 100)
print(a)

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

plt.hist(a, bins=10)
plt.show()


bins = np.arange(-0.5, 10, 1)
plt.hist(a, bins=bins, rwidth=0.8, color='green')
plt.xticks(range(0,10))
plt.show()


A1 = np.random.randint(0, 10, (10,10))
print(A1)

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

bins = np.arange(-0.5, 10, 1)
plt.hist(A1.flatten(), bins=bins, rwidth=0.8, color='green')
plt.xticks(range(0,10))
plt.show()


np.arange(-0.5, 10, 1)

array([-0.5,  0.5,  1.5,  2.5,  3.5,  4.5,  5.5,  6.5,  7.5,  8.5,  9.5])


Original: https://blog.csdn.net/qq_45176548/article/details/126627128
Author: 北山啦
Title: numpy在数字图像处理中的应用

## Title: DataFrame逻辑运算＞ ＜

import pandas as pd
# 读取文件

data


openhighcloselowvolumeprice_changep_changeturnover2018-02-2723.5325.8824.1623.5395578.030.632.682.392018-02-2622.8023.7823.5322.8060985.110.693.021.532018-02-2322.8823.3722.8222.7152914.010.542.421.322018-02-2222.2522.7622.2822.0236105.010.361.640.902018-02-1421.4921.9921.9221.4823331.040.442.050.58………………………2015-03-0613.1714.4814.2813.13179831.721.128.516.162015-03-0512.8813.4513.1612.8793180.390.262.023.192015-03-0412.8012.9212.9012.6167075.440.201.572.302015-03-0312.5213.0612.7012.52139071.610.181.444.762015-03-0212.2512.6712.5212.2096291.730.322.623.30

643 rows × 8 columns

data.head()    #默认获取前五行


openhighcloselowvolumeprice_changep_changeturnover2018-02-2723.5325.8824.1623.5395578.030.632.682.392018-02-2622.8023.7823.5322.8060985.110.693.021.532018-02-2322.8823.3722.8222.7152914.010.542.421.322018-02-2222.2522.7622.2822.0236105.010.361.640.902018-02-1421.4921.9921.9221.4823331.040.442.050.58

• 例如筛选data[“open”] > 23的日期数据
• data[“open”] > 23返回逻辑结果
data["open"] > 23
'''
2018-02-27     True
2018-02-26    False
2018-02-23    False
2018-02-22    False
2018-02-14    False
...

2015-03-06    False
2015-03-05    False
2015-03-04    False
2015-03-03    False
2015-03-02    False
Name: open, Length: 643, dtype: bool
'''

• 逻辑判断的结果可以作为筛选的依据
# 逻辑判断的结果可以作为筛选的依据


openhighcloselowvolumeprice_changep_changeturnover2018-02-2723.5325.88123.5395578.030.632.682.392018-02-0123.7123.86122.2266414.64-1.30-5.481.662018-01-3123.8523.98123.3149155.02-0.11-0.461.232018-01-3023.7124.08123.7032420.430.050.210.812018-01-1623.4024.60123.30101295.420.964.102.54

• 多个逻辑判断
data[(data["open"] > 23) & (data["open"] < 24)].head()


openhighcloselowvolumeprice_changep_changeturnover2018-02-2723.5325.88123.5395578.030.632.682.392018-02-0123.7123.86122.2266414.64-1.30-5.481.662018-01-3123.8523.98123.3149155.02-0.11-0.461.232018-01-3023.7124.08123.7032420.430.050.210.812018-01-1623.4024.60123.30101295.420.964.102.54

• query(expr)
• expr:查询字符串

data.query("open23").head()


openhighcloselowvolumeprice_changep_changeturnover2018-02-2723.5325.88123.5395578.030.632.682.392018-02-0123.7123.86122.2266414.64-1.30-5.481.662018-01-3123.8523.98123.3149155.02-0.11-0.461.232018-01-3023.7124.08123.7032420.430.050.210.812018-01-1623.4024.60123.30101295.420.964.102.54

• isin(values)

# 可以指定值进行一个判断，从而进行筛选操作
data[data["open"].isin([23.53, 23.85])]


openhighcloselowvolumeprice_changep_changeturnover2018-02-2723.5325.88123.5395578.030.632.682.392018-01-3123.8523.98123.3149155.02-0.11-0.461.232017-07-2623.5323.92122.85110276.48-0.30-1.272.762015-12-1823.5324.66123.43109230.050.652.793.742015-11-2623.8524.08123.5051446.29-0.31-1.301.76

Original: https://blog.csdn.net/weixin_48135624/article/details/115438167
Author: 缘 源 园
Title: DataFrame逻辑运算＞ ＜

(0)

### 大家都在看

• #### 《概率论与数理统计》学习笔记

重温《概率论与数理统计》进行查漏补缺，并对其中的概念公式等内容进行总结，以便日后回顾。 目录 第一章 概率论的基本概念 第二章 随机变量及其分布 第三章 多维随机变量及其分布 第四…

Python 2023年2月2日
029
• #### 绘制折线图分析股票涨跌

绘制折线图分析股票涨跌 * – 利用numpy加载文件 – 平均值 – + 算术平均值 + 加权平均值 + * VWAP – 成交量…

Python 2023年1月12日
056
• #### python数据表元素不为空值_python 填充空值失败_怎么用 Python 做数据分析实例

01 生成数据表 第一部分是生成数据表，常见的生成方法有两种，第一种是导入外部数据，第二种是直接写入数据。 Excel 中的文件菜单中提供了获取外部数据的功能，支持数据库和文本文件…

Python 2022年12月31日
050
• #### python坦克大战

文章目录 前言 资源获取 一、项目介绍 * 1.pygame是什么？ 2.操作指南 3.项目演示 二、项目实现 * 1.安装库 2.引入库 3.项目代码 – 3.1 主…

Python 2023年1月20日
039
• #### 我以为自己MySQL够牛逼了，直到看到了Alibaba的面试题

前言 众所周知，简历上”了解＝听过名字；熟悉＝知道是啥；熟练＝用过；精通＝做过东西”。 相信大家对于MySQL的索引都不陌生， 索引(Index)是帮助My…

Python 2023年1月28日
041
• #### 数据挖掘快速入门 第一章 Jupyter Notebook使用 和matplotlib绘图

安装环境 和 库 需要操作工具anaconda， jupyter notebook 库 pandas numpy matplotlib等matplotlib 画图numpy 处理数…

Python 2023年1月14日
024
• #### pyinstaller打包exe(详细教程)

✅作者简介：大家好我是hacker707,大家可以叫我hacker，新星计划第三季python赛道Top1🏆📃个人主页：hacker707的csdn博客🔥系列专栏：python💬推…

2022年8月19日
0150
• #### Django框架：10、Ajax补充说明、多对多三种创建方法、Django内置序列化组件、批量操作数据方法、分页器思路

Django框架 Django框架 一、Ajax补充说明 1、针对前端回调函数接受值的说明 二、多对多三种创建方式 1、自动创建 2、纯手动创建 3、半自动创建 三、Django内…

Python 2023年1月28日
057

Python 2023年1月5日
035
• #### 你给文字描述，AI艺术作画，精美无比！附源码，快来试试！

💡 作者：韩信子@ShowMeAI📘 深度学习实战系列：https://www.showmeai.tech/tutorials/42📘 TensorFlow 实战系列：https:…

Python 2023年2月1日
027
• #### 数据分析从0到1—-Numpy篇

文章目录 前言 什么是Numpy(Numerical Python)? Numpy ndarray对象 * array arange linspace logspace zeros…

Python 2023年1月10日
028
• #### rh358 003 ansible部署双网卡绑定 DNS原理 bind正向解析

双网卡绑定 绑定多张网卡成为逻辑口，从而实现链路冗余，以及数据流量的负载均衡 1.创建team口 [root@servera ~]# nmcli connection add ty…

Python 2023年2月1日
038
• #### 解决Tomcat部署工件中无子模块的工件

本文是在尝试了刷新Maven项目、clean了Maven缓存并且重启IDEA之后任然无法在Tomcat中找到子模块对应的工件，这时就要试着模仿着自己创建一个模块父类的pom.xml…

Python 2022年10月26日
0182
• #### Python读取CSV文件，并进行数据可视化绘图

数据源文件：sitka_weather_07-2018_simple.csv等文件网盘链接免费下载_的博客-CSDN博客 介绍：文件sitka_weather_07-2018_si…

Python 2022年12月23日
094
• #### 当线下门店遇上AI：华为云ModelBox携手佳华科技客流分析实践

摘要：在赋能传统门店客流经营数字化转型方面，华为云ModelBox与伙伴佳华科技合作推出的”华为云客流统计项目”，算是一次成功的探索。 现如今，AI技术蓬勃…

Python 2023年2月1日
022
• #### Java版的NumPy – NDArray 矩阵

NDArray 矩阵 1. 转置矩阵 Python NumPy 提供了多种排序的方法。 这些排序函数实现不同的排序算法，每个排序算法的特征在于执行速度，最坏情况性能，所需的工作空间…

Python 2023年1月12日
045