Numpy-我的学习笔记(全)

目录:

介绍

numpy是’Numerical Python’的简称,numpy提供了一个高性能的多维数组对象ndarray(N Dimension Array),以及大量的库函数和操作。

维度

图片

1)维度的写法

图片

2)元素的索引

图片

ndarray数据结构

1)元数据部分

存储当是当前ndarray对象当一些描述信息。比如shape\size\dtype\ndim

2)真实数据部分

存储的是当前这个ndarray对象中的真实数据

ndarray常用属性

ndim返回数组堆数

shape返回数组形状

dtype返回数组数据类型

size返回数组元素个数

itemsize返回数组每个元素占用空间大小(单位为字节)

nbytes返回数组所有元素占用空间大小(单位为字节)

图片

ndarray与list的区别

  1. list列表可以存储不同数据类型,而ndarray数据存储的所有元素类型,都必须一致
  2. 使用numpy创建数组的效率比原生list要高的多
  3. 使用ndarray创建数组的好处

1)每个元素类型一致,那么整个ndarray只需要一个元数据信息即可,而不是像list一样,每个对象都需要存储一个元数据信息

2)由于元数据只需要存储一份,所以更节省空间

3)每个元素类型一致,说明每个元素占用内存大小是一致的,存储数据可以更紧凑,效率更高

列表与数组之间的相互转换

  1. 列表转成数组,直接对列表应用np.array函数即可图片
  2. 数组转列表:tolist()图片

创建数组的不同方式

1、用np.array()函数去创建数组

  • np.array(参数)函数,参数给了什么样式的数据,就构建什么样式的ndarray数组;你给我一个一维列表,我就构建一个一维数组;你给我一个二维列表,我就构建一个二维数组;

  • 在numpy中,一维数组又叫做"向量";二维数组又叫做"矩阵";

2、利用np.arrange()函数去创建数组

对比range()函数

**相同点:**用法相同。都是(start,end,step)

不同点:np.arrnge()函数的步长可以是浮点数,但是range()函数的步长不能是浮点数

图片

3、利用指定值生成指定形状的数组

  • np.zeros((x,y)):生成一个x行y列的,元素都是0的二维数组;

  • np.ones((x,y)):生成一个x行y列的,元素都是1的二维数组;

  • np.full((x,y),value):生成一个x行y列的,元素都是value的二维数组,其中这个value值可以是整数(正整数,0,负整数)或者小数;

    图片

    Ps:传入一个数字,就可以创建一维数组;传入三个数字,就可以创建三维数组

4、按照已有的ndarray数组的形状,创建形状相同但指定元素的ndarray数组

先创建一个数组,再使用np.xx_like函数

图片

图片

常用的函数有:

  • np.zeros_like()

  • np.ones_like()

  • np.full_like()

5、创建单位矩阵和对角矩阵

1)单位矩阵
  • np.eye()或np.identity()

图片

2)对角矩阵
  • np.diag()

图片

6、创建等差数列数组

对比arrange()函数和linspace()函数学习
  1. np.arange(start,stop,step)第三个参数指的是元素步长;固定步数,和首位数

  2. np.linspace(start,stop,num)第三个参数指的是元素个数;固定首位数,个数。尾数可以不固定也可以固定

    图片

  3. np.linspace()中两个常用的参数:endpoint和dtype

    • endpoint=True表示是包含终止值(默认),endpoint=False表示不包含终止值;
    • dtype=np.float64指定创建的数组的数据类型默认是float64,你也可以设置为dtype=np.np.int32;

    图片

7、创建等比数列数组

图片

注意:上述代码表示在2的一次方到2的七次方之间,生成4个数,这四个数字还构成了一个等比数列。

图片

注意:上述代码表示会默认base=10,也就是说,在10的一次方到10的五次方之间,生成3个数,这3个数还构成一个等比数列。

8、通过自定义函数构建数组

(3,3)表示三行三列。第一行,第一列,坐标表示为(0,0),同理,第一行,第三列,坐标表示为(0,2)。

图片

Numpy中的常数

  • 正无穷:Inf = inf = infty = Infinity = PINF
  • 负无穷:NINF
  • 正零:PZERO
  • 负零:NZERO
  • 非数值:nan = NaN = NAN
  • 自然数e:e
  • π:pi
  • 伽马:euler_gamma
  • None:newaxis

图片

Numpy中的数据类型与数据类型转化dtype、astype

1、numpy中常用的数据类型

1byte=4bits 、 32bit=4 bytes、 64bit=8bytes、int32、 float64

### OFDM-ISAC 学习资源汇总 #### 1. ISAC通信感知一体化背景 未来的第五代(5G)和第六代(6G)无线系统预计能够提供高速率通信和高精度感知服务[^1]。为了实现这一目标,大量的研究集中在不同的场景和系统架构下的ISAC技术。 #### 2. OFDM-ISAC 技术概览 尽管当前许多ISAC的工作主要基于OFDM波形展开,但在特定条件下,如车辆移动引起的多普勒频偏会破坏OFDM子载波间的正交性,从而影响性能表现[^2]。然而,对于静态或低速环境而言,OFDM仍然是一个非常有效的选择,并且已经被广泛应用于早期的ISAC实验中。 #### 3. 学习路径建议 - **基础知识巩固**: 掌握基本的数字信号处理概念,特别是傅里叶变换及其逆运算;理解调制解调原理,尤其是QAM、PSK等常见方式。 - **深入理论学习**: 关注有关MIMO技术和毫米波传播特性的文献,因为这些都是现代无线通讯系统的基石之一。 - **实践操作训练**: 利用MATLAB/Simulink或其他仿真工具搭建简单的OFDM传输链路模型,尝试加入噪声干扰源观察其对BER的影响变化规律。 - **前沿动态追踪**: 定期查阅最新的学术期刊文章和技术报告,了解行业内最新进展趋势以及面临的挑战难题所在之处。 #### 4. 参考书籍与在线课程推荐 - *《Wireless Communications》* by Andrea Goldsmith 提供了一个面而深刻的视角来看待整个无线通信领域内的核心知识点。 - Coursera平台上开设有专门面向工程师群体的基础级至高级别的系列专题讲座——“Introduction to Wireless Communication Systems”,非常适合初学者入门学习使用。 ```python import numpy as np from scipy import fftpack def ofdm_modulate(data_bits, num_subcarriers=64): """Simple OFDM modulation function""" symbols_per_frame = int(len(data_bits)/np.log2(num_subcarriers)) frames = data_bits.reshape(-1,symbols_per_frame) modulated_frames = [] for frame in frames: symbol_indices = np.arange(num_subcarriers) complex_symbols = (-1)**frame @ (symbol_indices[:,None]==range(symbols_per_frame)).astype(int)*2j*np.pi/num_subcarriers idft_result = fftpack.ifft(np.exp(complex_symbols), axis=0).real.flatten() cyclic_prefix_length = int(0.1*num_subcarriers) cp_added_signal = np.r_[idft_result[-cyclic_prefix_length:], idft_result] modulated_frames.append(cp_added_signal) return np.concatenate(modulated_frames) data_sequence = np.random.randint(0, 2, size=(1024,)) ofdm_signal = ofdm_modulate(data_sequence) print(ofdm_signal[:10]) ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值