提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
1.逻辑运算
# 生成10名同学,5门功课的数据
>>> score = np.random.randint(40, 100, (10, 5))
# 取出最后4名同学的成绩,用于逻辑判断
>>> test_score = score[6:, 0:5]
# 逻辑判断, 如果成绩大于60就标记为True 否则为False
>>> test_score > 60
array([[ True, True, True, False, True],
[ True, True, True, False, True],
[ True, True, False, False, True],
[False, True, True, True, True]])
# BOOL赋值, 将满足条件的设置为指定的值-布尔索引
>>> test_score[test_score > 60] = 1
>>> test_score
array([[ 1, 1, 1, 52, 1],
[ 1, 1, 1, 59, 1],
[ 1, 1, 44, 44, 1],
[59, 1, 1, 1, 1]])
2.通用判断函数
np.all()
# 判断前两名同学的成绩[0:2, :]是否全及格
>>> np.all(score[0:2, :] > 60)
False
np.any()
# 判断前两名同学的成绩[0:2, :]是否有大于90分的
>>> np.any(score[0:2, :] > 90)
True
3.np.where(三元运算符)
# 判断前四名学生,前四门课程中,成绩中大于60的置为1,否则为0
temp = score[:4, :4]
np.where(temp > 60, 1, 0)
- 复合逻辑需要结合np.logical_and和np.logical_or使用
# 判断前四名学生,前四门课程中,成绩中大于60且小于90的换为1,否则为0
np.where(np.logical_and(temp > 60, temp < 90), 1, 0)
# 判断前四名学生,前四门课程中,成绩中大于90或小于60的换为1,否则为0
np.where(np.logical_or(temp > 90, temp < 60), 1, 0)
4.统计运算
min(a, axis) max(a, axis]) median(a, axis) mean(a, axis, dtype) #平均值 std(a, axis, dtype) #标准差 var(a, axis, dtype)#方差 axis 轴的取值并不一定,Numpy中不同的API轴的值都不一样,在这里,axis 0代表列, axis 1代表行去进行统计 最大最小值得下标 np.argmax(temp, axis=) np.argmin(temp, axis=)
5.数组间运算
a = np.array([[1,2,3],[3,4,5]])
a + 3
array([[4, 5, 6],
[6, 7, 8]])
广播机制 如果两个数组的后缘维度(trailing dimension,即从末尾开始算起的维度)的轴长度相符,其中一个数组的某一维度为1,则认为它们是广播兼容的。广播会在缺失和(或)长度为1的维度上进行。
6.矩阵
矩阵乘法遵循准则: (M行, N列)*(N行, L列) = (M行, L列)
矩阵的乘法不满足交换律:A×B≠B×A 矩阵的乘法满足结合律。即:A×(B×C)=(A×B)×C
np.matmul np.dot
np.matmul和np.dot的区别: 二者都是矩阵乘法。 np.matmul中禁止矩阵与标量的乘法。 在矢量乘矢量的內积运算中,np.matmul与np.dot没有区别。
|