一、数组与矩阵
矩阵是数组的一个分支,可以通用,但是数组灵活,速度更快
for要先进行遍历,而numpy直接进行计算
二、创建数组的方法
运行结果:
- array:
将输入数据转换为ndarray,输入数据可以是列表、数组、元组以及其他序列,如果不指明数据类型,将自动推断,默认复制所有输入数据
array的属性 | 作用 |
shape | 返回一个元组,标识array的维度,[形状,几行,几列] |
ndim | 返回一个数字,表示数组的维度 |
size | 返回一个数字,表示所有数据元素的数目 |
dtype | 返回数组元素的数据类型 |
2.arange
python内建函数range的数组版,返回一个数组
np.arange(开始,结束,步长)
3.使用ones创建全是1的数组
np.ones(shape,dtype=None,order='c')
m=np.ones((2,3))
print(m)
n=np.ones((5,))
print(n)
l=np.ones((5))
print(l)
4.使用zeros创建全是0的数组
np.zeros(shape,dtype=None,order='c')
5.full创建指定值的数组
np.full(shape,fill_value,dtype=None,order='c')
结果:
6.多维数组
可以理解为几块的几维数组
o=np.zeros((2,3,3))
print(o,o.shape,o.ndim,o.size)
7.返回与原数组相同形状与数据类型的数组
np.zeros_like(原数组)
np.ones_like()
np.ones_like()
8.random模块生成随机数组
np.random.randn(数),传一个数就是一维,n个数就是n维
三、数组的计算
1.reshape不改值修改形状
d=np.arange(10).reshape(2,5)#2和5相乘必须为10
print(d)
2.加减乘除
加减乘除是每一个元素都做同样的变换
总结:
a.形状一样的数组对应位置进行计算;
b.一维和多维数组可以计算,只是在某一维度上是一样的形状,仍然按位置进行计算;(在维度那一方进行计算,相当于将一维数组进行扩充,每一维和最开始的一维都相同,多维数组的每一维都减一维数组)
3.广播原则
让所有输入数组都想其中形状最长的数组看齐,形状不足的部分都通过在前面加1补齐;
输出数组的形状都是输入数组总装的各个维度上的最大值;
如果输入数组的某个维度和输出数组的某个维度的长度相同或者长度为1,这个数组能够用来计算,否则出错;
当输入数组的某个维度的长度为1,沿着此维度运算时都用此维度上的第一组值。
四、基础索引与切片
一维数组的索引类似于列表的索引
多维数组的索引
结果:
五、布尔索引
import numpy as np
a=np.arange(10)
print(a)
b=a>5
print(b)
print(a[b])
将数组进行0,1化
a[a<=5]=0
a[a>5]=1
print(a)
六、Numpy的轴
二维数组行时0轴,列是1轴
三维数组块时0轴,行是1轴,列是2轴
数组有几维就有几个轴
转置换轴
行列转置:数组.transpose()
轴转置:数组.swapaxes(1,0)