主要用于处理数据的计算。
shape:数组的维度,从最外层的【】向里数起,返回(外-->内的维数)
eg:[1,2,3] =(3,) ([[[3,3,3],[3,31,1]],[[3,3,3],[3,31,1]]]) =(2, 2, 3)
从最外层的括号看起,数这个括号内有几个item,依次代表shape的每一位数。
每个维度表示一个定义,存储某一类数据。
每一维的item索引都从0开始。
!!!!!!!!
!!!!!!!!!! 这些方法都用于创建一个ndarray数组
numpy数组的维数是秩 rank
list的方法对ndarray也适用
1.a = np.array([ [], [], ...]) //n次嵌套就是n维数组
2.a = np.array([...], ndmin = n ) //指定数组维度
3.a = np.empty([3, 2], dtype = int) //生成3行2列的int型随机数组
4.arange和切片同理,arange(start, end, step)
5.a = np.linspace(start, end, 差)
6.a = np.logspace(start, end, 个数)
numpy索引与切片:
索引:1.正常索引
从0开始 2.布尔索引:print(a
[a > 6])
切片:1.同list 2.用slice函数设置,s = slice(start, end, step) print(a[s])
数组操作:
1.reshape:改变数组维数, a = a.reshape(3,4)。
注:reshape后的元素个数应和原来一样
2.
3.翻转数组:交换轴--np.swapaxes(from, to)
4.修改维度:
增加:a = np.expand_dim(arr, axis)
删除:a = np.squeeze(arr, axis),
5.在
原轴上拼接数组:a = np.concatenate((a, b), axis = ?)
注:在哪个axis上拼接,这个轴上的长度可以不同,但是其他轴的长度必须相等。
6.在
新轴上拼接数组:a = np.stack((a, b),
axis = ?)
水平拼接:a = np.hstack((a, b))
竖直拼接:a = np.vstack((a, b))
7.分割数组:
a = np.spilt(a, num):将a等分为num个大小相同的数组
a = np.spilt(a, [b, c, d, e, .....]):按照位置分割
8.添加删除元素:
a = np.append(a, values,
axis = ?),
当axis没写的时候默认返回一个一维数组。
a = np.delete(a, obj, axis = ?),obj是删除位置
9.插入元素:
a = np.insert(a, obj, values, axis = ?),obj是插入位置
常用函数:
1.字符串操作函数
2.数学函数:np.aroud():四舍五入 np.floor() np.ceil():上下取整
3.统计函数:min max 方差。。。
副本与视图:
副本:深拷贝,改变数据不会影响原数据,物理位置不相同
视图:会影响,物理位置相同
使用原数组
切片 修改数据 会影响原数组数据
使用
view()方法会创建一个新数组,新数组的
维数变化不会影响原数据
使用
copy()方法会创建一个
副本,新的物理地址,完全不影响。
赋值:
a = b后,a和b就指向同一个物理地址,修改一个另一个会跟着变。
Matplotlib:
1.from matplotlib import pyplot as plt
plt.title() plt.xlabel() plt.ylabel() plt.plot(x,y,
marker = "")
2.可以在marker添加格式,改变样式。
3.条形图:plt.bar()
4.频率分布直方图:plt.hist()
5.
子图绘制:plt.subplot()
广播机制:
当运算中两个数组的维度不同时,自动触发广播机制。
规则:
1.每个数组不为空。
2.将两个张量的形状信息右对齐,从右向左观看同一维度下,张量的轴长必须相等,
或者其中一个轴长为1,
或者其中一个轴长为空。