=== 为三个学生的三门课程成绩建模 ===
姓名/成绩 | 语文 | 数学 | 英语 | 物理 |
---|---|---|---|---|
Tom | 90 | 100 | 110 | 89 |
Ali | 80 | 100 | 33 | 99 |
Li | 89 | 99 | 33 | 93 |
stu_info = np.array([
[90,100,110,89],
[80,100,33,99],
[89,99,33,93]
])
= 取值操作 获取Ali的成绩 =
stu_info[1]
array([ 80, 100, 33, 99])
= 取值 获取Ali的数学成绩 =
stu_info[1][1]
stu_info[1,1]
100
== 切片 获取Ali的数学成绩到物理成绩 ==
理解1:4 ,从第1位开始,保留4-1个值
stu_info[1,1:4]
array([100, 33, 99])
=== 切片操作 获取所有人的语文成绩 ===
第一个冒号,表示取所有人stu_info[:,0]
array([90, 80, 89])
=== 索引器 获取TOM、Li的C、M、P成绩 ===
stu_info[np.ix_([0,2],[0,1,3])]
array([[ 90, 100, 89],
[ 89, 99, 93]])
= 使用转置操作 获取TOM、Li的C、M、P成绩 =
stu_info[[0,2]].T[[0,1,3]].T
array([[ 90, 100, 89],
[ 89, 99, 93]])
=== 修改数组的值 ===
print(stu_info)
stu_info[2] = [100,100,100,100]
print(stu_info)
stu_info[:,1] = [50,50,50]
print(stu_info)
[[ 90 100 110 89] [ 80 100 33 99] [ 89 99 33 93]]
[[ 90 100 110 89] [ 80 100 33 99] [100 100 100 100]]
[[ 90 50 110 89] [ 80 50 33 99] [100 50 100 100]]
注意:数组创建后,大小就固定了,无法新增或删除数组的行与列
=== 布尔类型索引 ===
print(stu_info)
print(stu_info>60)
[[ 90 50 110 89] [ 80 50 33 99] [100 50 100 100]]
[[ True False True True] [ True False False True] [ True False True True]]
获取大于60且小于90的成绩
stu_info[(stu_info>60) & (stu_info<90)]
array([89, 80])
再看一个例子
names = np.array(['joe','tom','anne'])
scores = np.array([[70,80,90],[77,88,99],[80,90,70]])
classes = np.array(['语文','数学','英语'])
print(names)
print(scores)
print(classes)
# 取joe的成绩
print(names=='joe')
print(scores[names=='joe'])
# 输出joe的数学成绩
print(scores[names=='joe',classes=='数学'])
# 输出joe和anne的成绩
print(scores[(names=='joe')| (names=='anne')])
['joe' 'tom' 'anne']
[[70 80 90] [77 88 99] [80 90 70]]
['语文' '数学' '英语']
取joe的成绩[ True False False]
[[70 80 90]]
输出joe的数学成绩[80]
输出joe和anne的成绩[[70 80 90] [80 90 70]]