数据的维度
python中是没有数组的,用列表来进行有序数据的存储,用集合来进行无序数据的存储。对于一维数据可以采用列表和集合,至于二维和三维数据则用列表表示。
numpy
什么是numpy,numpy有什么特征?
为什么要用numpy中的数组代码呢?最主要可以简化代码。有很多时候列表的操作是相对麻烦的,将其转化为数组就更容易操作。(python中如果直接有数组类型是不是就不需要numpy了?c语言中好像有数组,但是很大的缺点是操作的一些函数较少,而numpy有很多对数组操作的办法,可能这就是它的优点)
列表直接进行操作:
def pySum():
a = [0, 1, 2, 3, 4, 5]
b = [0, 1, 2, 3, 4, 5]
c = []
for i in range(len(a)):#循环a的长度次
c.append(a[i]**2 + b[i]**3)#往列表c中添加数据
return c
print(pySum())
numpy转化为数组后的操作:
def pySum():
a = np.array([0, 1, 2, 3, 4, 5])#将列表变为数组
b = np.array([0, 1, 2, 3, 4, 5])
c = a**2 + b**3#也不进行循环操作了,直接进行相加赋值运算
return c
pySum()
ndarry对象的属性:
b = np.array([0, 1, 2, 3, 4, 5])
b.ndim, b.shape, b.size, b.dtype, b.itemsize #b.ndim(维数) b.shape(行列), b.size(元素个数), b.dtype(类型), b.itemsize(对象中每个元素的大小)
ndarry数组的创建(默认的基本都是浮点数)
将列表集合传入
调用相关函数
维度变化的常用方法:
a1 = np.full((3, 4), 10)
a2 = np.full((3, 4), 10)
a1, a2
b1 = a1.reshape(2, 6) # 不修改原始数据,借助a1给a2赋值
b2 = a2.resize(2, 6) # 修改原始数据
b1, b2
数据类型转化:
数组的操作
索引和切片,分为一维和多维。
数组的运算
数组与标量之间的运算:
numpy一元函数:
作业:创建正态分布随机数据,保留(0, 1)的数,然后求平均值
a = np.random.randn(2, 3, 4)
b = a[ (a>0)&(a<1) ]
b.mean()