1.Python中整型、列表解析
C语言整型本质上是对应某个内存位置的标签,里面存储的字节会编码成整型;而Python的整型其实是一个指针,指向包含这个Python对象所有信息的某个内存位置,其中包括可以转换成整型的字节。
Python列表中的每一项都是一个完整的Python对象。
2.Numpy创建数组
import numpy as np
#创建一个长度为10的数组,数组的值都是0
np.zeros(10,dtype = int)
#创建一个3*5的浮点型数组,数组的值都是1
np.ones((3,5),dtype = float)
#创建一个3*5的数组,数组的值都是3.14
np.full((3,5),3.14)
#创造一个线性序列数组
np.arange(0,20,2)
#创建一个5个元素的数组,这5个数均匀地分配到0-1(等间距)
np.linspace(0,1,5)
#创建一个3*3的,在0-1均匀分布的随机数组成的数组
np.random.random((3,3))
#创建一个3*3的,均值为0,标准差为1的正态分布数组
np.random.normal(0,1,(3,3))
#创建一个3*3的,[0,10)区域的整型数组
np.random.randint(0,10,(3,3))
#创造一个3*3的单位矩阵
np.eye(3,3)
#创建一个由3个整型数组组成的未初始化的数组
#数组的值是内存空间的任意值
np.empty(3)
Numpy标准数据类型
数据类型 | 描述 |
---|---|
bool_ | 布尔值,用一个字节存储 |
int8\int16\int32\int64 | 整型,可表示正负2的n次方的数范围(正数最大值要减一) |
uint8\uint16\uint\32\uint\64 | 无符号整型,从0开始,最大值为有符号整型正负绝对值之和 |
float16\float32\float64 | 半\单\双精度浮点型,整数位分别为5\8\11比特位指数,剩下位表示尾数(从0开始计数) |
complex64\complex128 | 复数,由两个32\64位浮点数表示 |
数组的属性
x = np.random.randint(10,size=(3,4))
#维度
print(x.ndim)
#每个维度的大小
print(x.shape)
#数组的总大小
print(x.size)
#数组的数据类型
print(x.dtype)
数组的索引
x = np.arange(10)
print(x)
#索引获取第i=2个值
print(x[2])
print(x[-1])
x1 = np.random.randint(0,10,(3,4))
print(x1)
#索引获取第i行,第j列(i=1,j=2)
print(x1[1, 2])
#对指定位置的值进行修改
x1[1,2] = 4
数组的切片
'''
切片是为了获取子数组,切片的切断位置用:
语法格式:x[start:stop:step]
x = np.arange(10)
x_sub = x #这是赋值的引用地址,而不是copy(改变x_sub中的元素,x中也会变)
x_copy = x.copy#彼此独立,互不影响
'''
一维数组
x = np.arange(10)
print(x[:5])#获取前五个元素
print(x[5:])#获取后五个元素
print(x[5:10:2])#获取5-10位置的元素,间隔2个位置[5 7 9]
print(x[::-1])#所有元素,逆序的[9 8 7 6 5 4 3 2 1 0]
print(x[5::-2])#索引5开始每隔一个元素逆序[5 3 1]
多维数组
x = np.random.randint(0,13,(3,4))
print(x)
'''[[5 6 9 6]
[4 0 8 1]
[7 7 8 8]]'''
print(x[:2, :3])#x[行start:行stop:行step,列start:列stop:列step]
'''[[5 6 9]
[4 0 8]]'''
print(x[:, ::2])#所有行,每隔一列
'''[[5 9]
[4 8]
[7 8]]'''
print(x[::-1, ::-1])#逆序
'''[[8 8 7 7]
[1 8 0 4]
[6 9 6 5]]'''
数组的变形
x = np.arange(1,10)
print(x)#[1 2 3 4 5 6 7 8 9]
print(x.reshape(3,3))
'''[[1 2 3]
[4 5 6]
[7 8 9]]'''
#注意:不能将一维np.arange(10)编程二维,且元素总数要保持一致
x = np.array([1,2,3])
print(x)#[1 2 3]
print(x.reshape((1, 3)))#通过变形获取行向量[[1 2 3]]
print(x[np.newaxis, :])#通过newaxis获取行向量[[1 2 3]]
print(x.reshape(3, 1))#通过变形获取行向量
'''[[1]
[2]
[3]]'''
数组的拼接与分裂
拼接
'''
Numpy中的两个数组主要由np.concatenate、p.vstack、p.hstack例程实现
'''
x = np.array([1,2,3])
y = np.array([3,2,1])
print(np.concatenate([x, y]))#一维拼接[1 2 3 3 2 1]
g = np.array([[1,2,3],[4,5,6]])
print(np.concatenate([g, g], axis=1))
'''[[1 2 3 1 2 3]
[4 5 6 4 5 6]]'''
print(np.hstack([g, g]))
'''[[1 2 3 1 2 3]
[4 5 6 4 5 6]]'''
print(np.vstack([g, g]))
'''[[1 2 3]
[4 5 6]
[1 2 3]
[4 5 6]]'''
分裂
x = np.arange(12)
x1,x2,x3 = np.split(x,[3,5])
print(x1,x2,x3)#[0 1 2] [3 4] [ 5 6 7 8 9 10 11]
g = np.arange(16).reshape((4,4))
print(g)
'''
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]
[12 13 14 15]]'''
uper,lower = np.vsplit(g,[2])
print(uper)
'''[[0 1 2 3]
[4 5 6 7]]
'''
print(lower)
'''
[[ 8 9 10 11]
[12 13 14 15]]'''
left,right = np.hsplit(g,[2])
print(left)
'''
[[ 0 1]
[ 4 5]
[ 8 9]
[12 13]]'''
print(right)
'''
[[ 2 3]
[ 6 7]
[10 11]
[14 15]]
'''