深度学习理论基础1-Numpy

夜梦,语文老师勒令我写一篇《深度学习入门:基于Python的理论与实现》读后感。我不敢懈怠,立即翻出我的笔记本电脑,开始写作文。。。。

--------Numpy--------

简介:

---->是一个Python第三方模块

---->处理数组,矩阵,多维数组十分便捷

---->底层用C语言实现,高效

--------Numpy数组的加减乘除运算--------

np_arr=np.array([1,2,3])

这里numpy的array()方法返回了一个numpy.ndarray类型的对象,其参数接受了一个列表。

numpy.ndarray类型支持的运算让人满足及欢乐。我将立即举几个例子,分享我的欢乐。

import numpy as np


arr_1 = np.array([1,2,3])
arr_2 = np.array([4,5,6])
jia = arr_1 + arr_2
jian = arr_1 - arr_2
cheng = arr_1 * arr_2
chu = arr_1 / arr_2
print(jia)
print(jian)
print(cheng)
print(chu)

np数组的运算十分有趣。np数组成员之间进行逐个运算,形成了新的数组。这一切都没有用到循环!np数组相较于Python循环的优势,在数据量大的时候愈加明显。

--------Numpy数组的其他功能--------

----  (这个标记会分割知识点)

array=np.array([[1,2,3],[4,5,6]]) #[[1 2 3] [4 5 6]]
print(array.shape) #输出(2,3)
print(array.dtype) #int32

一只多维数组,np数组的shape属性显示了这个np数组的维度,dtype属性显示了这个np数组的类型

----

array_10=array*10
print(array_10) #输出[[10 20 30] [40 50 60]]

np数组的广播功能。一个np数组乘以单个的10,np数组内的每个元素都被乘以10.更详细的原理在下图。

其实10被自动补全成了与array相同的形状,然后相乘。

----

接下来,我们看一下更高级的补全操作。

array_2 = np.array([2,4,10])
array_t = array * array_2
print(array_t) # 输出[[ 2  8 30] [ 8 20 60]]

考虑下np.array([2,4,10])是怎么被补全成array的形状的呢?

如果你负责空间思维的那块脑子不够大,下面的图会帮到你。

 ----

array = np.array([[1,2,3],[4,5,6]])
print(array[0]) # 输出[1 2 3]
print(array[0][1]) # 输出2

索引取值。

----

array_1 = array.flatten()
print(array_1) # 输出[1 2 3 4 5 6]

把多维数组扁平化。也就是降维打击。把多维变成1维。

----

现在我们有array_1这个np数组,我们来逗逗它。

array_index=array_1[np.array([2,3,4])]
print(array_index) # 输出[3 4 5]

可以看到,一个np数组的索引里面依然可以放一个np数组。会根据索引里的np数组作为索引生成新的np数组。

----

array_tf=array_1[np.array([True,False,True,False,False,False])]
print(array_tf) # 输出[1 3]

或者np数组也可以接受一个成员为bool类型的np数组(普通数组类型的也可以接受)。结果也是一目了然的。

----

现在我们结合一下np数组运算和np数组的索引取值。

v = array_1 > 4
array_index=array_1[v]
print(array_index) #输出[5 6]

先计算出一串bool成员的np数组

然后把这个np数组作为array_1的索引

这两个组合操作让我们得到这个数组大于4的成员,是不是很方便呢?

----

--------结语--------

我们愉快的学完了需要的numpy数组的有关知识。下面我们具备学习后面的最低限度基础了。如果你希望使用numpy的更多强大功能,请向度娘求助。其他小伙伴让我们手拉手进入下一个环节吧!!

猜你喜欢

转载自blog.csdn.net/qq_40878431/article/details/85379142