1.NaN(Not a Number)是一个特殊的浮点数类型,表示一个未定义或不可表示的值。
# python中表示NaN
float('nan')
2.列表与数组的区别
列表中的每个元素类型可以不同,数组中的每个元素类型必须相同。
3.一维数据、二维数据、多维数据、高维数据的区别
一维数据:由对等关系的有序或无序数据构成且采用线性方式组织。例如:列表(有序)、集合(无序)、数组(有序)等。
二维数据:由多个一维数据构成,是一维数据的扩展形式。例如:表格(表格中的表头可以是二维数据的一部分,也可以不是)。
多维数据:是一维或二维数据在新的维度上的扩展。例如:二维数据(表格)增加时间的维度。
高维数据:仅利用最基本的二元关系展示数据间的复杂结构。例如:字典类型、数据表示格式(JSON、XML、YAML等)。
# 一维数据
# 列表(有序)
list1 = [1, 2, 3, 4]
# 集合(无序)
set1 = {1, 4, 2, 9}
# 二维数据
# 列表
list2 = [[1, 3, 4, 5],
[6, 67, 47, 53]]
# 多维数据
# 列表
list3 = [[[1, 3, 4, 5],
[6, 67, 47, 53]],
[[1, 3, 4, 5],
[6, 67, 47, 53]]]
# 高维数据
# 字典
dict1 = {"name": "zhangsan",
"address": {"a": 2,
"b": 3},
"age": 23}
4.CSV文件
CSV(Comma‐Separated Value, 逗号分隔值),是一种常见的文件格式,用来存储批量数据。
注意:CSV只能有效存储一维和二维数组
5.numpy中,假设有一个二维数组a,a[[m1,m2,...,mk]]表示取出数组a的第m1行,第m2行,...,第mk行,返回数组的子数组(仅包含原数组的指定行),这种索引方式称为切片(slicing)或高级索引(advanced indexing)。注意:子数组的修改不会影响原数组。
举一反三:a[:, [m1,m2,...,mk]]表示取出数组a的第m1列,第m2列,...,第mk列
b = np.arange(20) # [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19]
b.resize((4, 5)) # resize()改变原数组,reshape()不改变原数组
# b
# [[ 0 1 2 3 4]
# [ 5 6 7 8 9]
# [10 11 12 13 14]
# [15 16 17 18 19]]
c = b[[0, 1]]
# c
# [[0 1 2 3 4]
# [5 6 7 8 9]]
print(b[[0, 1]] == b[:2])
# [[ True True True True True]
# [ True True True True True]]
c = b[:, [0, 1]]
print(c)
# [[ 0 1]
# [ 5 6]
# [10 11]
# [15 16]]
6.分析下列代码
c = np.random.randint(1, 10, size=(5, 5))
c[c % 2 != 0] = 0 # 将数组中的所有奇数都置为0
# 这行代码表示一种条件赋值操作,对数组c中每个元素进行检查。
# c % 2 != 0表示一个布尔数组,如果某个元素为奇数,则返回True
# c[c % 2 != 0]取这些True值所对应的数组c元素的值
# c[c % 2 != 0] = 0 将这些值置为0