数据的维度
维度是一组数据的组织形式。数据维度就是在数据之间形成特定关系表达多种含义的一个概念。
一维数据:
一维数据由对等关系的有序或无序数据构成,采用线性方式组织。对应列表、数组和集合等概念。
列表和数组:一组数据的有序结构。
区别:
列表:数据类型可以不同
数组:数据类型相同
二维数据:
二维数据由多个一维数据构成,是一维数据的组合形式。
表格是典型的二维数据。其中,表头是二维数据的一部分
多维数据:
多维数据由一维或二维数据在新维度上扩展形成。例如增加时间维度的表格
高维数据:
高维数据仅利用最基本的二元关系展示数据间的复杂结构。利用键值对将数据组织起来的形成的数据关系。
数据维度的Python表示
一维数据:列表(有序)和集合(无序)类型
二维数据:列表类型
多维数据:列表类型
高维数据:字典类型或数据表示格式(JSON、XML、YAML)
1.数组的创建
创建数组对象
import numpy as np
#创建NumPy一维数组
arr1 = np.array([1,2,3,4])
print('一维数组:',arr1)
#创建二维数组
arr2 = np.array([[1,2,3],[4,5,6]])
print('二维数组:',arr2)
#设置最小维度3
arr3 = np.array([1,2,3,4],ndmin=3)
print('三维数组:',arr3)
# 数组的属性
arr1 = np.array([[1,2,3],[4,5,6]])
print('数组维度:',arr1.ndim)
print('数组形状:',arr1.shape)
print('数组的元素总数:',arr1.size)
print('数组元素的数据类型:',arr1.dtype)
2.修改数组的形状
#数组的展平,创建3行4列数组
arr = np.array([[0,1,2,4],[5,6,7,8],[9,10,11,12]])
#展平arr数组,但arr数组不改变
arr_b = arr.ravel()
print(arr,arr_b)
#数组转置和轴对换
#创建数组2行5
arr = np.arange(10).reshape(2,5)
print(arr)
print('转置数组:')
print(arr.T)
#用rollaxis函数
arr = np.arange(8).reshape(2,2,2)
print('原数组:',arr)
# 将轴 2 滚动到轴 0(宽度到深度)
print('调用 rollaxis 函数:')
print(np.rollaxis(arr,2))
3.数组连接
#创建数组arr1
arr1 = np.array([[1,2,3], [4,5,6]])
print('第1个数组arr1:',arr1)
#创建数组arr2
arr2 = np.array([['a',8,9], ['b',11,12]])
print('第2个数组arr2:',arr2)
# 注意两个数组的维度相同
#concatenate函数
print('沿轴0连接两个数组:')
print(np.concatenate((arr1, arr2),axis=0))
print('沿轴 1 连接两个数组:')
print(np.concatenate((arr1, arr2),axis=1))
#stack函数
print('沿轴 0 堆叠两个数组:')
print(np.stack((arr1, arr2),0))
print('沿轴 1 堆叠两个数组:')
print(np.stack((arr1, arr2),1))
4.数组切割
#创建数组arr1
arr1 = np.array([[1,2,3],
[4,5,6]])
print('第1个数组arr1:',arr1)
#创建数组arr2
arr2 = np.arange(1,18,2)
print('第2个数组arr2:',arr2)
#使用split函数
print('将arr1数组竖直分割为2个大小相等的子数组:')
print (np.split(arr1,2))
print('将arr1数组水平分割为3个大小相等的子数组:')
print (np.split(arr1,3,1))
print('将arr2数组在一维数组中表明的位置分割:')
print (np.split(arr2, [2, 4 , 8]))
5.数组的添加与删除
#创建数组arr append
arr = np.array([[1,2,3,4], [5,6,7,8]])
print('第1个数组arr:',arr)
print('原数组:',arr)
print('沿轴 0 添加元素:')
print(np.append(arr,[[9,10,11,12],[11,11,11,11]], axis=0))
print('沿轴 1 添加元素:')
print(np.append(arr,[[9,10],[11,12]], axis=1))
#创建数组arr
arr = np.array([[11,12,13,14], [15,16,17,18]])
print('第1个数组arr:',arr)
print('未传递axis参数。在插入之前输入数组会被展开。')
print(np.insert(arr,4,[9, 10,11,12]))
print('传递了axis参数,会广播值数组来配输入数组。')
print('沿轴 0 广播:')
print(np.insert(arr, 2, [9], axis=0))
'''
[[11 12 13 14]
[15 16 17 18]
[9 9 9 9]
]
'''
print('沿轴 1 广播:')
print(np.insert(arr, 2, [9], axis=1))
print('沿轴 0 插入:')
print(np.insert(arr, 2, [9,10,11,12], axis=0))
print('沿轴 1 广播:')
print(np.insert(arr, 2, [[9],[10]], axis=1))
print('沿轴 1 插入:')
print(np.insert(arr, 2, [[9,10],[11,12]], axis=1))