Numpy中array基础操作(1)
Numpy中array基础操作(1)
Numpy是python里面的一个数据科学包.相对于python底层的一些list操作而言,Numpy的操作对象是array(可以一维也可以是多维),其性能比python底层的实现快,代码更加简洁,并且包括了很多现成的数学函数,使用起来比较方便。想学tensorflow或者一些数据科学的工具,首先要学会使用numpy!这是基础。
与Python中的list唯一一个区别就是 numpy中每个array中的元素必须是同一个类型。
创建array的方法:
如果不指定类型的话 默认array里面的元素的类型全是 float64
1.使用python中的list和嵌套列表创建
2.使用Numpy中预定函数创建,例如:one/zero/full等
1.np.arange
2.ones zeros full
3.ones_like /zeros_like /full_like的用法
4.使用随机数模块np.random.randn创建array
5. array的一些操作
如果对一个array进行操作 就是对它里面的每一个元素进行了操作
例如 array_A = array_A + 1 就相当于把array_A中里面的每一个元素都加1啦
其他的一些操作也一样
6. broadcast原则
在python中有一个重要的原则叫broadcast原则:(以加法为例子)
广播一般发生在两个array的大小不一样的情况下:
1.数组A与数组B 维度相同
2.数组A与数组B维度不同 (2,3)就不能与(1,4)直接相加
3.数组A与数组B维度不同,但是有一个数组,在维度不同的地方 维度为1
这里x1是(2,3),x2是(1,3),虽然x1与x2第一个维度不同,但是由于x2的第一个维度是1,因此,在执行加法操作的过程中,x2会自动把维度扩充为与x1相同,也就是(2,3),之后x2就被填充为了[[2,2,2],[2,2,2]]。 也就是增加了一维
这两个例子也说明了 x1与x2在第二个维度上不同,但是x2在第二个维度上是1.那么他就能与x1相加, 并且自动将填充为与x1形状相同。
填的数大家自行理解一下(可以按块看,第一块就原来是只有一行5,5,5,就用5,5,5填充了一行, 第二块是由一行111填充的)
4.AB数组维度不同,但是维度大小从后往前相同是相同的
例如x1shape为(2,4,5,8),x2shape为(5,8)
开始 从后往前数,
x1中第四个维度是 8 x2中第四个维度也是8 相同
x1中第三个维度是 5 x2中第三个维度也是5 相同
那么 他们就可以相加
x1shape为(2,4,5,8),x2shape为(3,5,8)那么就不能相加了
开始 从后往前数,
x1中第四个维度是 8 x2中第四个维度也是8 相同
x1中第三个维度是 5 x2中第三个维度也是5 相同
x1中第二个维度是 4 x2中第三个维度也是3 不相同
那么 他们就不可以相加