当前位置: 首页 > news >正文

NumPy -数组创建

数组创建

目录

  • 从列表创建数组
  • 使用 NumPy 函数创建
  • 特殊数组创建
  • 从已有数据创建
  • 数组数据类型

从列表创建数组

基本创建

import numpy as np# 从列表创建一维数组
list1d = [1, 2, 3, 4, 5]
arr1d = np.array(list1d)
print(f"一维数组: {arr1d}")
print(f"形状: {arr1d.shape}")# 从列表创建二维数组
list2d = [[1, 2, 3], [4, 5, 6]]
arr2d = np.array(list2d)
print(f"\n二维数组:\n{arr2d}")
print(f"形状: {arr2d.shape}")# 从列表创建三维数组
list3d = [[[1, 2], [3, 4]], [[5, 6], [7, 8]]]
arr3d = np.array(list3d)
print(f"\n三维数组:\n{arr3d}")
print(f"形状: {arr3d.shape}")

指定数据类型

import numpy as np# 创建时指定数据类型
arr_int = np.array([1, 2, 3, 4], dtype=int)
arr_float = np.array([1, 2, 3, 4], dtype=float)
arr_complex = np.array([1, 2, 3, 4], dtype=complex)print(f"整数数组: {arr_int}, 类型: {arr_int.dtype}")
print(f"浮点数组: {arr_float}, 类型: {arr_float.dtype}")
print(f"复数数组: {arr_complex}, 类型: {arr_complex.dtype}")

使用 NumPy 函数创建

创建零数组

import numpy as np# 一维零数组
zeros1d = np.zeros(5)
print(f"一维零数组: {zeros1d}")# 二维零数组
zeros2d = np.zeros((3, 4))
print(f"\n二维零数组:\n{zeros2d}")# 三维零数组
zeros3d = np.zeros((2, 3, 4))
print(f"\n三维零数组形状: {zeros3d.shape}")# 指定数据类型
zeros_int = np.zeros(5, dtype=int)
print(f"\n整数零数组: {zeros_int}")

创建单位数组

import numpy as np# 一维单位数组
ones1d = np.ones(5)
print(f"一维单位数组: {ones1d}")# 二维单位数组
ones2d = np.ones((3, 4))
print(f"\n二维单位数组:\n{ones2d}")# 指定数据类型
ones_int = np.ones(5, dtype=int)
print(f"\n整数单位数组: {ones_int}")

创建空数组

import numpy as np# empty 创建未初始化的数组(值随机)
empty1d = np.empty(5)
print(f"一维空数组: {empty1d}")empty2d = np.empty((3, 4))
print(f"\n二维空数组:\n{empty2d}")

创建连续数组

import numpy as np# arange:类似 range,但返回数组
arr1 = np.arange(10)
print(f"arange(10): {arr1}")arr2 = np.arange(2, 10)
print(f"arange(2, 10): {arr2}")arr3 = np.arange(2, 10, 2)
print(f"arange(2, 10, 2): {arr3}")arr4 = np.arange(2, 10, 2, dtype=float)
print(f"arange(2, 10, 2, dtype=float): {arr4}")

创建等间隔数组

import numpy as np# linspace:创建等间隔的数组
arr1 = np.linspace(0, 10, 5)
print(f"linspace(0, 10, 5): {arr1}")arr2 = np.linspace(0, 10, 5, endpoint=False)
print(f"linspace(0, 10, 5, endpoint=False): {arr2}")# 对数和指数空间
arr3 = np.logspace(0, 2, 5)
print(f"logspace(0, 2, 5): {arr3}")arr4 = np.geomspace(1, 1000, 4)
print(f"geomspace(1, 1000, 4): {arr4}")

特殊数组创建

创建单位矩阵

import numpy as np# 2x2 单位矩阵
I2 = np.eye(2)
print(f"2x2 单位矩阵:\n{I2}")# 3x3 单位矩阵
I3 = np.eye(3)
print(f"\n3x3 单位矩阵:\n{I3}")# 指定对角线偏移
I_offset = np.eye(4, k=1)
print(f"\n对角线偏移的单位矩阵:\n{I_offset}")

创建对角矩阵

import numpy as np# 从一维数组创建对角矩阵
diag1 = np.diag([1, 2, 3, 4])
print(f"对角矩阵:\n{diag1}")# 提取对角线元素
arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
diag_elements = np.diag(arr)
print(f"\n原数组:\n{arr}")
print(f"对角线元素: {diag_elements}")

创建全值数组

import numpy as np# 创建全为指定值的数组
full1d = np.full(5, 7)
print(f"全为 7 的一维数组: {full1d}")full2d = np.full((3, 4), 7)
print(f"\n全为 7 的二维数组:\n{full2d}")# 指定数据类型
full_float = np.full(5, 7, dtype=float)
print(f"\n全为 7 的浮点数组: {full_float}")

从已有数据创建

复制数组

import numpy as nporiginal = np.array([1, 2, 3, 4, 5])# copy 创建副本
copied = np.copy(original)
print(f"原数组: {original}")
print(f"副本: {copied}")# 修改副本不影响原数组
copied[0] = 999
print(f"\n修改副本后:")
print(f"原数组: {original}")
print(f"副本: {copied}")

从现有数组创建

import numpy as nparr = np.array([1, 2, 3, 4, 5])# empty_like:创建相同形状的空数组
empty_like = np.empty_like(arr)
print(f"empty_like: {empty_like}")# zeros_like:创建相同形状的零数组
zeros_like = np.zeros_like(arr)
print(f"zeros_like: {zeros_like}")# ones_like:创建相同形状的单位数组
ones_like = np.ones_like(arr)
print(f"ones_like: {ones_like}")# full_like:创建相同形状的全值数组
full_like = np.full_like(arr, 7)
print(f"full_like: {full_like}")

数组数据类型

常见数据类型

import numpy as np# 整数类型
arr_int8 = np.array([1, 2, 3], dtype=np.int8)
arr_int16 = np.array([1, 2, 3], dtype=np.int16)
arr_int32 = np.array([1, 2, 3], dtype=np.int32)
arr_int64 = np.array([1, 2, 3], dtype=np.int64)print(f"int8: {arr_int8.dtype}")
print(f"int16: {arr_int16.dtype}")
print(f"int32: {arr_int32.dtype}")
print(f"int64: {arr_int64.dtype}")# 浮点类型
arr_float32 = np.array([1.5, 2.5, 3.5], dtype=np.float32)
arr_float64 = np.array([1.5, 2.5, 3.5], dtype=np.float64)print(f"\nfloat32: {arr_float32.dtype}")
print(f"float64: {arr_float64.dtype}")# 复数类型
arr_complex64 = np.array([1+2j, 3+4j], dtype=np.complex64)
arr_complex128 = np.array([1+2j, 3+4j], dtype=np.complex128)print(f"\ncomplex64: {arr_complex64.dtype}")
print(f"complex128: {arr_complex128.dtype}")# 布尔类型
arr_bool = np.array([True, False, True], dtype=bool)
print(f"\nbool: {arr_bool.dtype}")# 字符串类型
arr_str = np.array(['a', 'bb', 'ccc'], dtype='U10')
print(f"\nstring: {arr_str.dtype}")

类型转换

import numpy as np# 创建数组
arr = np.array([1, 2, 3, 4, 5])
print(f"原始数组: {arr}, 类型: {arr.dtype}")# 使用 astype 转换类型
arr_float = arr.astype(float)
print(f"转换为浮点: {arr_float}, 类型: {arr_float.dtype}")arr_complex = arr.astype(complex)
print(f"转换为复数: {arr_complex}, 类型: {arr_complex.dtype}")# 字符串数组转数值
arr_str = np.array(['1', '2', '3', '4', '5'])
arr_int = arr_str.astype(int)
print(f"\n字符串数组: {arr_str}")
print(f"转换为整数: {arr_int}, 类型: {arr_int.dtype}")

实际应用示例

示例 1:创建网格

import numpy as np# 创建坐标网格
x = np.linspace(0, 10, 11)
y = np.linspace(0, 10, 11)
X, Y = np.meshgrid(x, y)print(f"X 网格形状: {X.shape}")
print(f"Y 网格形状: {Y.shape}")
print(f"\nX 网格:\n{X}")
print(f"\nY 网格:\n{Y}")# 计算网格上的函数值
Z = np.sqrt(X**2 + Y**2)
print(f"\n函数值 Z:\n{Z}")

示例 2:创建随机数组

import numpy as np# 随机整数数组
random_int = np.random.randint(0, 10, size=(3, 4))
print(f"随机整数数组:\n{random_int}")# 随机浮点数组(0-1之间)
random_float = np.random.random((3, 4))
print(f"\n随机浮点数组:\n{random_float}")# 正态分布随机数组
random_normal = np.random.normal(0, 1, size=(3, 4))
print(f"\n正态分布随机数组:\n{random_normal}")

总结

数组创建是 NumPy 的基础:

  1. 从列表创建:np.array()
  2. 零数组:np.zeros()
  3. 单位数组:np.ones()
  4. 连续数组:np.arange(), np.linspace()
  5. 特殊数组:np.eye(), np.diag(), np.full()
  6. 类型控制:dtype 参数和 astype() 方法

http://www.dtcms.com/a/582776.html

相关文章:

  • 做网站方案怎么写合肥瑶海区寒假兼职工网站建设
  • 学习RT-thread(事件集)
  • 数据结构篇常见面试题清单
  • 基于STM32单片机的正激式开关电源设计(论文+源码)
  • 网站的建议小企业网站建设制作平台
  • Airflow调度爬虫任务:从零搭建高效定时采集系统
  • (论文速读)Fast3R:在一个向前通道中实现1000+图像的3D重建
  • 微算法科技(NASDAQ MLGO)基于PoS的跨链桥接协议(PoS-BCP):重塑区块链互操作生态
  • 网站地图的重要性网站建设开票内容是什么意思
  • 做网站文字编辑累吗室内装饰设计的主要内容
  • 天津网络网站制作巨量引擎广告投放平台登录入口
  • 衡水网站网站建设安全证查询官网
  • 【Linux系统】13. 命令行参数 环境变量
  • 中山免备案网站建设wordpress安装说明seo工具好用
  • 免费个人二级域名网站西安设计工作室
  • SQL plus中解决上下键找历史命令的工具--rlwrap命令行工具
  • 基于微服务脚手架的视频点播系统 (仿B站) [客户端] -1
  • 做网站销售电销好做吗网站建设投标书免费
  • 创建网站要钱吗优惠好券省钱必逛 查看详情 prime会员甄选 查看详情
  • uni-app app移动端实现纵向滑块功能,并伴随自动播放
  • Nacos-服务发现
  • 西安网站建设有限公司上海网站建设的意义
  • 网站推广新手入门h5自己制作模板
  • 广西网站建设定制阿里云备案网站负责人
  • 做网站长沙如何去掉wordpress
  • Netty详解-01
  • 我公司让别人做网站了怎么办个人微信公共号可以做微网站么
  • 做网站 发现对方传销兴义 网站建设
  • 节点小宝免费版流量机制解析:点对点直连技术与备用流量设计
  • 扁平化网站源码企业网站的建立费用 作什么科目