numpy作为深度学习的好帮手,它 是 Python 语言的一个第三方库,支持大量高维度数组与矩阵运算。此外,NumPy 也针对数组运算提供大量的数学函数。机器学习涉及到大量对数组的变换和运算,NumPy 就成了必不可少的工具之一。
简单介绍一下numpy的基础:
NumPy 的主要对象是多维数组 Ndarray。在 NumPy 中维度 Dimensions 叫做轴 Axes,轴的个数叫做秩 Rank。注意,numpy.array 和 Python 标准库 array.array 并不相同,前者更为强大,这也就是我们学习 NumPy 的重要原因之一。
使用
numpy.array的参数:
numpy.array(object, dtype = None, copy = True, order = None, subok = False, ndmin = 0)
参数 | 含义 |
---|---|
object | 任何暴露数组接口方法的对象都会返回一个数组或任何(嵌套)序列。 |
dtype | 数组的所需数据类型,可选。 |
copy | 默认为true ,对象是否被复制,可选。 |
order | C (按行)、F (按列)或A (任意,默认)。 |
subok | 默认情况下,返回的数组被强制为基类数组。 如果为true ,则返回子类。 |
ndmin | 指定返回数组的最小维数。 |
demo1:一维数组
a = np.array([1,2,3])
#输出 [1, 2, 3]
demo2:二维数组
a = np.array([[1, 1], [2, 2]])
#输出 :
[[1, 1]
[2, 2]]
NumPy 也支持比 Python 更多种类的数值类型:
bool_ | 存储为一个字节的布尔值(真或假) |
int_ intc intp | 默认整数,相当于 C 的long,通常为int32或int64 相当于 C 的int,通常为int32或int64 用于索引的整数,相当于 C 的size_t,通常为int32或int64 |
int8 int16 int32 int64 | 字节(-128 ~ 127) 16 位整数(-32768 ~ 32767) 32 位整数(-2147483648 ~ 2147483647) 64 位整数(-9223372036854775808 ~ 9223372036854775807) |
uint8 uint16 uint32 uint64 | 8 位无符号整数(0 ~ 255) 16 位无符号整数(0 ~ 65535) 32 位无符号整数(0 ~ 4294967295) 64 位无符号整数(0 ~ 18446744073709551615) |
float_ float16 float32 float64 | float64的简写 半精度浮点:符号位,5 位指数,10 位尾数 单精度浮点:符号位,8 位指数,23 位尾数 双精度浮点:符号位,11 位指数,52 位尾数 |
complex_ complex64 complex128 | complex128的简写 复数,由两个 32 位浮点表示(实部和虚部) 复数,由两个 64 位浮点表示(实部和虚部) |
numpy数字类型是dtype
(数据类型)对象的实例,每个对象具有唯一的特征。 这些类型可以是np.bool_
,np.float32
等。
稍微了解就好,具体numpy超详细教程可看:
https://blog.csdn.net/qq_52213943/article/details/123722568https://blog.csdn.net/qq_52213943/article/details/123722568https://blog.csdn.net/qq_52213943/article/details/123722568
然后开始今天的代码:
首先我们导入TensorFlow、numpy、matplotlib,
然后我们用昨天记录的画布展示写一个函数,传进一个我们构造的张量,转化成数组然后创建画布并显示(原理见day01、day02)首先导入TensorFlow、numpy、matplotlib
import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt
def show_tensor(tensor):
b = np.array(tensor)
plt.figure()
plt.imshow(b,cmap='gray')
plt.show()
定义main函数,创建一个128,128,3的张量,所有数值全为0
if __name__ == '__main__':
a = tf.zeros([128, 128, 3])
b = np.array(tf.zeros([128, 128, 3]))
show_tensor(a)
把这个张量调用前面的show_tensor(),得到一张全是黑色的画布图像
现在我们修改一些,我们将一个范围内的数值从0改为255(RGB三色通道,0-255像素值,0就是黑色,255最亮就是白色):
for i in range(20,100):
for j in range(20,100):
b[i,j,:] = 255
再把它打印出来看看:
我们将值从0改为255的点,发生了变化。
我们再随意一些:
d = tf.zeros([128,128])
d = np.array(d)
d[35:50,45:80] = 125
d[12:20,56:68] = 225
d = tf.constant(d)
show_tensor(d)
猜猜他的样子?
他是这个样子:
同理,我猜你现在也可以利用numpy绘制任意的图像了,比如:
再复杂一些当然可以,自己动手试试吧!
也许,这世界上根本就不存在什么奇迹,但是,如果真的有不可思议的变化就发生在了你身上,那么对于你来说,它不就是这世界上最大的一个奇迹吗? 愿你也能早日遇到那个里程碑,然后破土而出,创造出属于自己的人生奇迹!