大数据知识体系
首页
数据结构与算法
  • 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
目录

ndarray 的创建方式

# 创建方式

  • np.array()

    将输入的列表、元组、数组等序列类型转换我 ndaray 对象

  • np.asarray()

    array()和 asarray()都可以将结构数据转化为 ndarray,但是主要区别就是当数据源是 ndarray 时,array 仍然会 copy 出一个副本,占用新的内存,但 asarray 不会

  • np.zeros()

    根据指定形状创建一个全为 0 的 ndarray 对象

  • np.zeros_like()

    传入一个数组作为参数,根据该数组的形状和 dtype 创建一个全 0 的 ndaray 对象

  • np.ones()

    根据指定形状创建一个全为 1 的 ndarray 对象

  • np.ones_like()

    传入一个数组作为参数,根据该数组的形状和 dtype 创建一个全 1 的 ndaray 对象

  • np.empty()

    根据指定形状创建 ndarray 对象,只分配内存但是不填充任何值

  • np.empty_like()

    同上

  • np.full()

    根据指定形状传建一个 ndarray 对象,并用 fill_value 的值进行填充

  • np.full_like()

    传入一个数组作为参数,根据该数组的形状创建一个 ndarray 对象,并用 fill_value 的值进行填充

  • np.eye()

    传入一个整数 N,创建一个 N * N 的单位矩阵

  • np.identity()

    传入一个整数 N,创建一个 N * N 的单位矩阵

  • np.random

    随机抽样创建

  • np.arange()

    在给定间隔内返回均匀间隔的值(一维数组)

  • np.linspace()

    返回指定间隔内的等距数字。

  • np.fromfunction()

    通过对每个坐标执行函数来构造数组

  • np.fromfile()

    从文本或二进制文件中的数据构造数组

# 示例

import numpy as np

# data1也可以是tuple类型
# data1可以进行嵌套
data = [[1,2,3], [4,5,6]]
arr1 = np.array(data)
arr1
1
2
3
4
5
6
7
array([[1, 2, 3],
       [4, 5, 6]])
arr2 = np.asarray(arr1)
arr2
1
2
array([[1, 2, 3],
       [4, 5, 6]])
arr3 = np.zeros([3, 4])
arr3
1
2
array([[0., 0., 0., 0.],
       [0., 0., 0., 0.],
       [0., 0., 0., 0.]])
arr4 = np.zeros_like(data)
arr4
1
2
array([[0, 0, 0],
       [0, 0, 0]])
arr5 = np.ones([2, 3])
arr5
1
2
array([[1., 1., 1.],
       [1., 1., 1.]])
arr6 = np.ones_like(data)
arr6
1
2
array([[1, 1, 1],
       [1, 1, 1]])
# 可以直接在终端中演示
arr7 = np.empty([2, 2])
arr7
1
2
3
array([[3.62630691e-162, 2.21673659e-301],
       [1.76145475e-312, 6.93738460e-310]])
arr8 = np.empty_like(data)
arr8
1
2
array([[4607182418800017408, 4607182418800017408, 4607182418800017408],
       [4607182418800017408, 4607182418800017408, 4607182418800017408]])
arr9 = np.full([2,3], fill_value=3)
arr9
1
2
array([[3, 3, 3],
       [3, 3, 3]])
arr10 = np.full_like(data, 8)
arr10
1
2
array([[8, 8, 8],
       [8, 8, 8]])
# numpy.identity(n, dtype=None)
arr11 = np.identity(5)
arr11
1
2
3
array([[1., 0., 0., 0., 0.],
       [0., 1., 0., 0., 0.],
       [0., 0., 1., 0., 0.],
       [0., 0., 0., 1., 0.],
       [0., 0., 0., 0., 1.]])
"""
numpy.eye(N, M=None, k=0, dtype=<class‘float’>, order=’C’)
N: 行数
M:列数,默认等于N
k:对角线索引:0(默认)为主对角线,正值是指上对角线,负值是指到下对角线
order: {'C', 'F'}输出是否应存储在主要行(C样式)中或内存中的列主(Fortran样式)顺序
"""
arr12 = np.eye(5)
arr12
1
2
3
4
5
6
7
8
9
array([[1., 0., 0., 0., 0.],
       [0., 1., 0., 0., 0.],
       [0., 0., 1., 0., 0.],
       [0., 0., 0., 1., 0.],
       [0., 0., 0., 0., 1.]])
arr13 = np.random.randn(2, 3)
arr13
1
2
array([[-0.0678351 ,  0.23346548,  0.86009531],
       [ 0.33758557, -0.0413585 , -0.12480603]])
"""
参数
start:开始位置,数字,可选,默认值为0
stop:结束位置,数字,
step:步长,数字,可选,默认为1。如果指定step则必须指定start
dtype:类型。不指定则自动推断
"""
arr14 = np.arange(start=0, stop=10, step=2)
arr14
1
2
3
4
5
6
7
8
9
array([0, 2, 4, 6, 8])
arr15 = np.linspace(0, 10, 5)
arr15
1
2
array([ 0. ,  2.5,  5. ,  7.5, 10. ])
def fun(x, y):
    return x * 10 + y

np.fromfunction(fun, (4, 5), dtype=np.int)
1
2
3
4
array([[ 0,  1,  2,  3,  4],
       [10, 11, 12, 13, 14],
       [20, 21, 22, 23, 24],
       [30, 31, 32, 33, 34]])
def my_dot(a, b):
    return a * b

np.fromfunction(my_dot, (2, 3))
1
2
3
4
array([[0., 0., 0.],
       [0., 1., 2.]])
np.fromfunction(lambda i,j:i+j,(2, 3))
1
array([[0., 1., 2.],
       [1., 2., 3.]])

np.fromfile(file, dtype=float, count=-1, sep='')

  • file:要打开的文件对象或者文件名
  • dtype:返回数组的数据类型。对于二进制文件,它用于确定文件中项目的大小和字节顺序。错误的数据类型会返回错误的数据
  • count:要读取的项目数。-1 表示所有项目(即完整文件)
  • sep:如果文件是文本文件,则表示分隔项之间的分隔符。空(“”)分隔符表示应将文件视为二进制文件。分隔符中的空格(“”)与零个或多个空白字符匹配。仅由空格组成的分隔符必须至少与一个空格匹配
np.fromfile('./file/fromfile')
1
array([0., 1., 2., 1., 2., 3.])
np.arange(12).tofile('./file/intfile')
1
np.fromfile('./file/intfile') # 默认的dtype是float
1
array([0.0e+000, 4.9e-324, 9.9e-324, 1.5e-323, 2.0e-323, 2.5e-323,
       3.0e-323, 3.5e-323, 4.0e-323, 4.4e-323, 4.9e-323, 5.4e-323])

更多创建方式https://www.numpy.org/devdocs/reference/routines.array-creation.html (opens new window)。

上次更新: 2023/11/01, 03:11:44

← 初识 Numpy NumPy 的数据类型→

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