数组的创建
n1 = np.array([[1,2,3,4],[2,3,4,5],[3,4,5,6]])
#这样生成的数组在pycharm中没有提示,需要在后面添加 #type:np.ndarray
n2 = np.arange(0,12).reshape(3,4)#type:np.ndarray
a = np.zeros((3,4))
b = np.ones((3,4))
c = np.empty((3,4))#随机数组
d = np.eye(3,3)#对角线数组
e = np.random.randn(3,4)#正态分布
f = np.random.normal(2,5,(3,4))#自定义正态分布
数组的属性
print(n2.ndim)#数组的维度
print(n2.shape)#数组的形状
print(n2.size)#数组的大小
print(n2.dtype)#数组的数据类型
print(n2.itemsize)#ndarray 对象中每个元素的大小,以字节为单位
数组的切片和索引
注意重点:数组的索引会降维,但是切片不会降维
n1 = np.arange(0,12).reshape(3,4)
print(n1)
print(n1[1,2])#降维 6
print(n1[1][2])#降维 6
print(n1[[1,2,0],[1,2,0]])#花式索引:可以将前后的数值组成为坐标 [ 5 10 0]
print(n1[1:2,0:2])#[[4 5]] 这里的逗号可以理解为降维
print(n1[1:2][0:2])#[[4 5 6 7]]
x = np.array([[ 0, 1, 2],[ 3, 4, 5],[ 6, 7, 8],[ 9, 10, 11]])
print (x)
print ('\n')
print ('大于 5 的元素是:')
print (x[x > 5])
广播
广播应满足以下条件:
当数组维度不同,一个维度长度为0时
当数组维度不同且某一维度不为0时,这个维度的长度必须为1
a = np.array([[[ 0, 0, 0],
[10,10,10],
[20,20,20],
[30,30,30]],
[[0, 0, 0],
[10, 10, 10],
[20, 20, 20],
[30, 30, 30]]
])
b = np.array([[0,0,0]])
print(a.shape)
print(b.shape)
print(a+b)
数组的操作
n2 = np.arange(0,12).reshape(3,4)#type:np.ndarray #修改数组的形状
print (n2.ravel())#展开数组
print (n2)
#转置
a = np.arange(12).reshape(3, 4)
print(a)
print(np.transpose(a))
print(a)
print(a.T)
#换轴
a = np.arange(8).reshape(2, 2, 2)
print(a)
print(np.swapaxes(a, 2, 0))
#降维
x = np.arange(9).reshape(1, 3, 3)
print(x)
y = np.squeeze(x)
print(y)
print(x.shape, y.shape)
#连接数组 h 水平 v 垂直 split 分割
a = np.array([[1, 2], [3, 4]])
print(a)
b = np.array([[5, 6], [7, 8]])
print(b)
print(np.stack((a, b), 0))
print(np.stack((a, b), 1))
a.resize(1,20) #返回指定形状的新数组 重复出现数组中的元素
print(a)
算术函数
#add() subtract() multiply() divide()
a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6], [7, 8]])
print(np.add(a,b))
print(np.subtract(a,b))
print(np.multiply(a,b))
print(np.divide(a,b))
#幂函数
print(np.power(a,2))
统计函数
#方差
print(np.var(a))
#标准差
print(np.std(a))
#加权平均
print(np.average(a))
#算数平均
print(np.mean(a))
#中值
print(np.median(a))
#最大值最小值
print(np.amin(a))
print(np.amax(a))
#最大值最小值差
print(np.ptp(a))
#百分比 第 p 个百分位数是这样一个值,它使得至少有 p% 的数据项小于或等于这个值,且至少有 (100-p)% 的数据项大于或等于这个值。
print (np.percentile(a, 30))
排序筛选
筛选返回索引
print(np.sort(a))
print(np.argmax(a))
print(np.argmin(a))
print(np.nonzero(a))
b = np.where(a > 3)
print(b)