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

numpy入门

numpy

基本属性

import numpy as np
arr = np.arange(15).reshape((3,5))
print(arr) # [[ 0  1  2  3  4],[ 5  6  7  8  9],[10 11 12 13 14]]
print(type(arr)) # 类型 <class 'numpy.ndarray'>
print(arr.shape) # 形状元组 (3, 5)
print(arr.ndim) # 维度 2
print(arr.dtype) # 元素类型 int64
print(arr.size) # 元素总数量 15
print(arr.itemsize) # 元素字节 8

方法调用获取属性

import numpy as np
arr = np.arange(15).reshape((3,5))
print(arr)
print(np.shape(arr)) # (3,5)
print(np.ndim(arr)) # 2
print(np.size(arr)) # 15

创建ndarray

列表创建

import numpy as np
arr = np.array([1,2,3,4,5])
print(arr)
print(type(arr))

zeros() 全0

import numpy as np
arr = np.zeros((3,5))
print(arr)
print(arr.shape)
print(arr.dtype)

ones() 全1

import numpy as np
arr = np.ones((3,5))
print(arr)
print(arr.shape)
print(arr.dtype)

empty() 内容随机依赖内存状态,不是空对象!

import numpy as np
arr = np.empty((3,5))
print(arr)
print(arr.shape)
print(arr.dtype)

arange(起始值,结束值,步长,类型) 左闭右开

import numpy as np
arr = np.arange(1,5,2,dtype=np.int64)
print(arr) # [1 3]
print(arr.shape) # (2,)
print(arr.dtype) # int64

matrix() 生成二维数组

import numpy as np
arr = np.matrix('1 2;3 4')
# arr = np.matrix('1,2;3,4')
# arr=np.matrix([[1,2],[3,4]])
print(arr) # [[1 2],[3 4]]
print(type(arr)) # ndarray的子类 <class 'numpy.matrix'>
print(arr.shape) # (2, 2)
print(arr.dtype) # int64

随机数矩阵

import numpy as np
arr = np.random.rand(2,3) # 范围 [0.0,1.0)
print(arr) # [[0.70754242 0.947653   0.15737358],[0.24641693 0.92461219 0.649437
print(type(arr)) # <class 'numpy.ndarray'>
print(arr.shape) # (2, 3)
print(arr.dtype) # float64
import numpy as np
arr = np.random.randint(-1,5,size=(2,3)) # 范围 [-1,5),2行3列,整数
print(arr) 
print(type(arr)) # <class 'numpy.ndarray'>
print(arr.shape) # (2, 3)
print(arr.dtype) # int32
import numpy as np
arr = np.random.uniform(-1,5,size=(2,3)) # 范围 [-1,5),2行3列,浮点数
print(arr) 
print(type(arr)) # <class 'numpy.ndarray'>
print(arr.shape) # (2, 3)
print(arr.dtype) # float64

等比数列 logspace

import numpy as np
arr = np.logspace(0,10,10,base=10) # 起始幂值,结束幂值,元素个数,底数
print(arr) # [1.00000000e+00 1.29154967e+01 1.66810054e+02 2.15443469e+03,2.78255940e+04 3.59381366e+05 4.64158883e+06 5.99484250e+07,7.74263683e+08 1.00000000e+10] 
print(type(arr)) # <class 'numpy.ndarray'>
print(arr.shape) # (10,)
print(arr.dtype) # float64

等差数列 lispace

import numpy as np
arr = np.linspace(0,5,5,endpoint=True) # 起始值,结束值,元素个数,是否包含结束值
print(arr) # [0.   1.25 2.5  3.75 5.  ]
print(type(arr)) # <class 'numpy.ndarray'>
print(arr.shape) # (5,)
print(arr.dtype) # float64

np.random.randn() 返回符合标准正态分布的数据

import numpy as np
arr = np.random.randn(2,3)
print(arr)
print(arr.shape)
print(arr.dtype)

类型转换

创建时指定参数 dtype

import numpy as np
arr = np.ones((3,5),dtype=np.float32)
print(arr)
print(arr.shape)
print(arr.dtype)

创建后调用astype()

import numpy as np
arr = np.ones((3,5)).astype(np.float32)
print(arr)
print(arr.shape)
print(arr.dtype)

内置函数

基本函数

  • np.ceil(arr) 向上取整
  • np.floor(arr) 向下取整
  • np.rint(arr) 四舍五入
  • np.isnan(arr) 元素是否为NAN 返回形状相同,元素都是 bool 类型的 ndarray
  • np.multiply(arr1,arr2) 元素相乘
  • np.divide(arr1,arr2) 元素相除
  • np.abs(arr) 元素绝对值
  • np.where(condition,x,y) 三元运算,示例:np.where(arr>0,1,-1)

统计函数

  • np.mean(arr) 平均值
  • np.sum(arr) 和
  • np.max(arr) 最大值
  • np.min(arr) 最小值
  • np.std(arr) 标准差
  • np.var(arr) 方差
  • np.argmax(arr) 最大值下标索引
  • np.argmin(arr) 最小值下标索引
  • np.cumsum(arr) 返回一维数组,每个元素都是之前所有元素累加和
  • np.cumprod(arr) 返回一维数组,每个元素都是之前所有元素累加积
  • 多维数组默认统计全部维度,axis参数可以按指定轴心统计,0列1行

比较函数

  • np.any(arr>0) 任意元素满足返回True
  • np.all(arr>0) 所有元素满足返回True

排序

  • np.sort(arr) 排序返回新副本
  • arr.sort() 原地修改

去重

  • np.unique(arr) 去重返回新副本

运算

基本运算

  • 两个 ndarray 加减乘除,对应元素直接运算

矩阵运算

  • arr1.dot(arr2) 点乘
  • np.matmul(arr1,arr2) 矩阵乘法
  • arr1 @ arr2
import numpy as np
arr1 = np.arange(6).reshape(2,3)
arr2 = np.arange(6).reshape(3,2)
print(arr1 @ arr2) # [[10 13],[28 40]]
print(arr1.dot(arr2)) # [[10 13],[28 40]]
print(np.matmul(arr1,arr2)) # [[10 13],[28 40]]

广播机制

  • 当一个数组与一个标量,或与一个不同形状但兼容的数组相乘时,会触发广播机制。
http://www.wxhsa.cn/company.asp?id=4074

相关文章:

  • 【simpleFOC】一个电机如何模拟不同旋钮的手感反馈?
  • 第一周作业2
  • 第一次课堂作业
  • [高可用/负载均衡] Ribbon LoadBalancer: 开源的客户端式负载均衡框架
  • 梦话周记
  • 【电机控制】无刷电机结构阐述---磁极数、槽数
  • 金刚怒目是我哭
  • nginx使用默认端口80作为服务端口
  • 机器学习和推荐算法顶级会议和期刊
  • java使用mysql
  • 2025年医疗行业API安全最佳实践与深度案例分析:从理论到全面落地
  • 2026 NOI 做题记录(二)
  • lc1027-最长等差数列
  • 13
  • np.zeros函数
  • Langchain之让LLM拥有记忆
  • 25.9.14
  • .net PublishSingleFile 打包程序提取
  • 实用指南:Java类加载机制
  • C 语言注释
  • 扫描线
  • C语言中的查找与排序算法整理
  • k8s练习
  • css-2
  • AtCoder Beginner Contest 423 ABCDEF 题目解析
  • numpy中的shape属性
  • mac 查看fat32磁盘
  • 使用Smart-Doc为Java项目生成gRPC API文档
  • 数字时钟用的什么字体
  • Python数据分析零基础完整课程大纲(详细版)【202509第1版】 - 指南