数据的维度
维度:一组数据的组织形式
一维数据
一维数据由对等关系的有序或无序数据构成,采用线性方式组织。对应列表、数组和集合等概念。
列表和数组:一组数据的有序结构。
区别:
列表:数据类型可以不同
数组:数据类型相同
二维数据
二维数据由多个一维数据构成,是一维数据的组合形式。
表格是典型的二维数据。其中,表头是二维数据的一部分。
多维数据
多维数据由一维或二维数据在新维度上扩展形成。例如增加时间维度的表格。
高维数据
高维数据仅利用最基本的二元关系展示数据间的复杂结构。利用键值对将数据组织起来的形成的数据关系。使用字典类型或数据表示格式。
Numpy维数组对象:ndarray
使用numpy:import numpy as np
N维数组对象:ndarray
ndarray是一个多维数组对象,由两部分构成:实际的数据、描述这些数据的元数据(数据维度、数据类型等)。ndarray数组一般要求所有元素类型相同(同质),数组下标从0开始。
如何使用ndarray
使用np.array()生成一个ndarray数组(ndarray在程序中的别名是:array),np.array()输出成 [] 形式,元素由空格分割。
属性
ndarray数组的创建和变换
创建方法
从Python中的列表、元组等类型创建ndarray数组。
x = np.array([0,1,2,3]) # 从列表类型创建
print(x)
x1 = np.array((4,5,6,7)) # 从元组类型创建
print(x1)
x2 = np.array([[1,2],[9,8],(0.1, 0.2)]) # 从列表和元组混合类型创建
print(x2)
[0 1 2 3]
[4 5 6 7]
[[ 1. 2. ]
[ 9. 8. ]
[ 0.1 0.2]]
使用Numpy中函数创建ndarray数组,如:arange,ones,zeros等。
从字节流(raw bytes)中创建ndarray数组。
从文件中读取特定格式,创建ndarray数组。
转换
对于创建后的ndarray数组,可以对其进行维度变换和元素类型变换。
维度变换
元素类型变换: 数组向列表的转换
ndarray数组的操作
索引:获取数组中特定位置元素的过程。
In [54]: a = np.arange(24).reshape((2,3,4))
In [55]: a
Out[55]:
array([[[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]],
[[12, 13, 14, 15],
[16, 17, 18, 19],
[20, 21, 22, 23]]])
In [56]: a[1,2,3] # 每个维度一个索引值,逗号分割
Out[56]: 23
In [57]: a[0,1,2]
Out[57]: 6
In [58]: a[-1,-2,-3]
Out[58]: 17
ndarray数组的运算
数组与标量之间的运算
数组与标量之间的运算作用于数组的每一个元素
In [62]: a=np.arange(24).reshape((2,3,4))
In [63]: a
Out[63]:
array([[[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]],
[[12, 13, 14, 15],
[16, 17, 18, 19],
[20, 21, 22, 23]]])
In [64]: a.mean()
Out[64]: 11.5
In [65]: a=a/a.mean() #计算a与元素平均值的商
In [66]: a
Out[66]:
array([[[ 0. , 0.08695652, 0.17391304, 0.26086957],
[ 0.34782609, 0.43478261, 0.52173913, 0.60869565],
[ 0.69565217, 0.7826087 , 0.86956522, 0.95652174]],
[[ 1.04347826, 1.13043478, 1.2173913 , 1.30434783],
[ 1.39130435, 1.47826087, 1.56521739, 1.65217391],
[ 1.73913043, 1.82608696, 1.91304348, 2. ]]])
NumPy一元函数
对ndarray中的数据执行元素级运算的函数
NumPy二元函数