大数据知识体系
首页
数据结构与算法
  • JVM
  • Java
  • Scala
  • Python
设计模式
  • MySQL
  • Redis
  • HDFS
  • HBase
  • ClickHouse
  • ElasticSearch
  • Iceberg
  • Hudi
  • Spark
  • Flink
  • Hive
  • Yarn
  • Zookeeper
  • Maven
  • Git
  • 数据仓库
  • 用户画像
  • 指标体系
数据治理
关于
首页
数据结构与算法
  • JVM
  • Java
  • Scala
  • Python
设计模式
  • MySQL
  • Redis
  • HDFS
  • HBase
  • ClickHouse
  • ElasticSearch
  • Iceberg
  • Hudi
  • Spark
  • Flink
  • Hive
  • Yarn
  • Zookeeper
  • Maven
  • Git
  • 数据仓库
  • 用户画像
  • 指标体系
数据治理
关于
  • JVM

    • JVM 架构
    • JVM 类加载机制
    • JVM 运行时数据区
    • JVM 垃圾回收机制
    • JVM 性能监控与调优
    • JVM 常见错误
  • Java

    • Java基础

      • Java 基础知识
      • Java 基础 - 枚举类
      • Java 基础 - 异常处理
      • Java 基础 - 泛型
      • Java 基础 - 反射
      • Java 基础 - 代理模式
      • Java 基础 - 注解
    • Java集合

    • Java并发编程

    • Java 开发规范
  • Scala

    • Scala 概述
  • Python

    • Numpy

      • 初识 Numpy
      • ndarray 的创建方式
      • NumPy 的数据类型
      • NumPy 数组计算
        • 数组与标量的算术运算
        • 数组与数组之间的运算
      • 拷贝
      • 索引和切片
      • 数学和统计方法
      • 数组形状变换
      • 通用函数
      • 排序
      • 搜索和计数
      • 线性代数
      • 伪随机数生成
      • 广播
      • 文件输入和输出
    • Pandas

      • 初识 Pandas
      • 认识 Series 和 DataFrame
      • Series 和 DataFrame 增删改查
      • Index对象增删改查
      • 普通列和行Index相互转化
      • 快速查看整体信息
      • 数值运算
      • 合并数据集
      • 数值统计与聚合
      • 分组聚合
      • 分类类型
      • 排序和排名
      • 时间序列
      • 文件输入与输出
      • 缺失值处理
      • 字符串处理
      • pandas sql
      • 其它
  • 语言基础
  • Python
  • Numpy
Will
2022-08-04
目录

NumPy 数组计算

import numpy as np

arr = np.array([[1,2,3], [4,5,6]])
arr
1
2
3
4
array([[1, 2, 3],
       [4, 5, 6]])

# 数组与标量的算术运算

arr * 2
1
array([[ 2,  4,  6],
       [ 8, 10, 12]])
arr + 2
1
array([[3, 4, 5],
       [6, 7, 8]])

# 数组与数组之间的运算

arr + arr
1
array([[ 2,  4,  6],
       [ 8, 10, 12]])
arr * arr # 矩阵乘法在线性代数里面会讲
1
array([[ 1,  4,  9],
       [16, 25, 36]])
arr - arr
1
array([[0, 0, 0],
       [0, 0, 0]])
arr / arr
1
array([[1., 1., 1.],
       [1., 1., 1.]])
arr
1
array([[1, 2, 3],
       [4, 5, 6]])
# *=、+=运算会修改原对象,而不是创建新对象
arr *= 2
arr
1
2
3
array([[ 2,  4,  6],
       [ 8, 10, 12]])
# shape相同的数组之间比较会生成布尔数组
arr2 = arr + 1
arr2 > arr
1
2
3
array([[ True,  True,  True],
       [ True,  True,  True]])
# 不同类型的数组计算之后的结果的类型会向上转换为更精确的类型(如int类型的数组a和float类型的数组b求和得到c的类型为float,而不是int)
int_arr = np.array([1, 2, 3])
float_arr = np.array([0.1, 0.2, 0.3])

res_arr = int_arr + float_arr
res_arr.dtype
1
2
3
4
5
6
dtype('float64')
# 形状不同的数组之间能否进行计算?
arr1 = np.array([1, 2, 3])
arr2 = np.array([1, 2, 3, 4])

arr1 + arr2
1
2
3
4
5
---------------------------------------------------------------------------

ValueError                                Traceback (most recent call last)

<ipython-input-12-1195aae3f7bd> in <module>()
      3 arr2 = np.array([1, 2, 3, 4])
      4
----> 5 arr1 + arr2


ValueError: operands could not be broadcast together with shapes (3,) (4,)
arr3 = np.array([[1, 2, 3],
                 [1, 2, 3]])

arr1 + arr3
1
2
3
4
array([[2, 4, 6],
   [2, 4, 6]])
上次更新: 2023/11/01, 03:11:44

← NumPy 的数据类型 拷贝→

Theme by Vdoing | Copyright © 2022-2023 Will 蜀ICP备2022002285号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式