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绘制任意的图像了,比如:

再复杂一些当然可以,自己动手试试吧!

 也许,这世界上根本就不存在什么奇迹,但是,如果真的有不可思议的变化就发生在了你身上,那么对于你来说,它不就是这世界上最大的一个奇迹吗? 愿你也能早日遇到那个里程碑,然后破土而出,创造出属于自己的人生奇迹!
 

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐