一、N维数组-ndarry
import numpy as np
a=np.array([[1,2,3],[4,5,6]])
#打印形状
a.shape
#(2,3) np.shape(a)
#维度
a.ndim
#2
#元素数量
a.size
#6
#元素长度(字节)
a.itemsize
#4
#元素类型
a.dtype
#dtype('int32')
#去重
temp = np.array([[1, 2, 3, 4],[3, 4, 5, 6]])
np.unique(temp)
array([1, 2, 3, 4, 5, 6]
二、基本操作
1.生成数组
特殊数组
#生成全1矩阵
a1=np.ones([4,8])
#生成全0矩阵
a2=np.zeros([4,8])
#参照a1生成全0矩阵
a3=np.zeros_like(a1)
从现有数组生成数组:
array从现有数组中创建:深拷贝 array仍然会copy出一个副本,占用新的内存
asarry相当于索引,并没有创建新数组:浅拷贝
a=np.array([[1,2,3],[4,5,6]])
b=np.array(a)
c=np.asarray(a)
a[0,0]=100
#a:array([[100, 2, 3],
[ 4, 5, 6]])
#b:array([[1, 2, 3],
[4, 5, 6]])
#c:array([[100, 2, 3],
[ 4, 5, 6]])
生成固定范围数组
# 生成等间隔的数组
#np.linspace (start, stop, num, endpoint)
#起始值,终止值,数量,是否包含stop(默认为TRUE)
np.linspace(0, 100, 11)
#生成等差数组 不包括stop 相当于range
np.arange(start,stop, step, dtype)
#生成等比数组
np.logspace(start,stop, num)
生成随机数组
np.random.random()生成一个0到1的随机浮点数:0<=n<1.0
np.random.uniform()左闭右开,随机数
np.random.randint()左闭右闭,随机取整生成一个指定范围内的整数。其中参数a是下限,参数b是上限,生成的随机数n:a<=n<=b
2.ndarray运算
np.all()
np.any()
- np.max()
- np.min()
- np.median()
- np.mean()
- np.std()
- np.var()
- np.argmax(axis=) — 最大元素对应的下标
- np.argmin(axis=) — 最小元素对应的下标
3.数组间的计算
numpy 广播机制
广播机制的条件:对两个数组上进行运算时,NumPy会从最后一个维度开始,逐维度地比较它们的大小(不足的维度补1)。两个数组对应的维度需要满足两者相等或其中一个为1才可以进行广播,否则会报错。且计算结果每一维的尺寸为A,B对应维度尺寸的最大者。
4.矩阵计算
满足结合律不满足交换律
-
np.matmul
-
np.dot
-
注意:二者都是矩阵乘法。 np.matmul中禁止矩阵与标量的乘法。 在矢量乘矢量的內积运算中,np.matmul与np.dot没有区别。