夜梦,语文老师勒令我写一篇《深度学习入门:基于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的更多强大功能,请向度娘求助。其他小伙伴让我们手拉手进入下一个环节吧!!