Python学习(1)
知识点1:
- 列表、集合、数组类型表示数据
- 列表中每一个数据的数据类型可以存在不同。数组要求每一个元素的类型是相同的
- 二维数据是一维数据组合形式
- 表格是典型的二维数据
- 高维数据是通过最基本的二元关系表示数据间的复杂结构
知识点2: 6. 一维数据可以使用列表(有序)和集合类型(无序)
-
二维和多维数据用列表类型(多维列表代表多维数据) -
高维数据用字典或者数据表示格式: dict={
"A"="aa"
}
Numpy简介
-
表示n维数组对象:ndarray -
线性代数、傅里叶变换、随机数生成 -
引用:import numpy as np -
例子:计算
A
2
+
B
3
A^2+B^3
A2+B3,其中
A
A
A和
B
B
B是一维数组
def pysum():
a=[0,1,2,3,4]
b=[9,8,7,6,5]
c=[]
for i in range(len(a)):
c.append(a[i]**2+b[i]**3)
return c
print(pysum())
import numpy as np
def npsum():
a=np.array([0,1,2,3,4])
b=np.array([9,8,7,6,5])
c=a**2+b**3
return c
print(npsum())
- 提供数组对象提高计算速度(底层C语言)
- 科学计算中,一个维度所有的数据的数据类型往往是相同的。(数组对象采用相同的数据类型更好)
- ndarray是一个多维数组对象,包括实际的数据和描述这些数据的元数据(维度、类型等)。要求类型相同,下标从0开始。
- np.array()输出为[],元素由空格分开。
- 轴(维度)和秩(.ndim)(维度的数量)、ndarray对象的尺度(.shape)(如矩阵,n行m列)、元素个数(.size)(如上述n*m)、ndarray对象的元素类型(.dtype)、ndarray对象中每个元素的大小(.itemsize)(以字节为单位,方便计算ndarray占用的内存空间)
a=np.array([[0,1,2,3,4],
[9,8,7,6,5]])
a.ndim
>2
a.shape
>(2,5)
a.dtype
>'int 32'
a.itemsize
>4
- python仅支持整数、浮点数和复数三种类型。
- ndarray也可以由非同质对象构成,非同质ndarray认为每一个不同类型的元素都是一个对象,都是对象类型‘o’,无法发挥使用numpy优势,需要避免使用。(同质即本质相同,非同质则不同,此处应该指的是类型不同)。
创建ndarray数组
- 从python的列表、元组。
x=np.array(list/tuple)
x=np.array(list/tuple,dtype=np.float32)
- 从numpy中的函数创建。(如arange、ones、zeros等)
np.arange(n)
np.ones(shape)
np.zeros(shape)
np.full(shape,val)
np.eye(n)
np.ones_like(a)
np.zeros_like(a)
np.full_like(a,val)
np.linspace()
a=np.linspace(1,10,4)//1代表起始位置,第二个参数是最后一个元素的值,4代表共有四个元素。
>a=([1.,4.,7.,10.])
b=np.linspace(1,10,4,endpoint=False)//置为False时不作为最后一个值出现。
>b=([1.,3.25,5.5,7.75])
np.concatenate()
- 从字节流(raw bytes)中创建。
- 从文件中读取特定的格式,创建ndarray数组。
- 创建后的ndarray数组可以进行维度和元素变换
a.reshape(shape)
a.resize(shape)
a.swapaxes(ax1,ax2)
a.flatten
new_a=a.astype(new_type)
b=a.tolist()
a=np.ones((2,3,4),dtype=np.int32)
a.reshape((3,8))
b=a.astype(np.float)
>b
数组的索引和切片
-
索引是获取数组中特定位置元素的过程 a=np.array([9,8,7,6,5])
a[2]
-
切片是获取数组中元素子集的过程(在数组中找到一组数据) a=np.array([9,8,7,6,5])
a[1:4:2]
-
多维数组的索引: a=np.arange(24).reshape((2,3,4))
a
>([[[0,1,2,3],
[4,5,6,7],
[8,9,10,11]],
[[12,13,14,15],
[16,17,18,19],
[20,21,22,23]]])
a[1,2,3]
>23
a[-1,-2,-3]
>17
-
多维数组的切片: a[:,1,-3]
>[5,17]
a[:,1:3,:]
>{[[4,5,6,7],[8,9,10,11]],[[16,17,18,19],[20,21,22,23]]}
a[:,:,::2]
>[[[0,2],
[4,6],
[8,10]],
[[12,14],
[16,18],
[20,22]]]
数组的运算
- 数组与标量之间的运算:数组中每一个元素都要与标量进行计算。
a.mean()
>11.5
a=a/a.mean()
a
>三层数组
- 数组的计算公式:
np.abs(x)、np.fabs(x)
np.sqrt(x)
np.square(x)
np.log(x)、np.log10(x)、np.log2(x)
np.ceil(x)、np.floor(x)
np.rint(x)
np.modf(x)
np.cos(x)、np.cosh(x)、np.sin(x)、np.sinh(x)、np.tan(x)、np.tanh(x)
np.exp(x)
np.sign(x)
3.numpy的二元函数: +、-、*、/、**
np.maximum(x,y)、np.fmax()
np.minimum(x,y)、np.fmin()
np.mod(x,y)
np.copysign(x,y)
>、<、>=、=<、==、!=
karency_2021.10.10 源:北京理工大学嵩天
|