NumPy创建ndarray数组大揭秘

2024-04-03 00:20

本文主要是介绍NumPy创建ndarray数组大揭秘,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.使用 np.array() 创建

  • 使用 np.array() 由 python list 创建

n = np.array(list)
  • 注意

    • numpy 默认 ndarray 的所有元素的类型是相同的

    • 如果传进来的列表中包含不同的类型,则统一为同一类型,优先级:str > float > int

    • ndarray 的常见数据类型:

      • int:int8、uint8、int16、int32、int64

      • float:float16、float32、float64

      • str:字符串

l = [1,4,2,3,5,6]n = np.array(l)n# 执行结果array([1, 4, 2, 3, 5, 6])# 类型type(n)# 执行结果numpy.ndarray# 形状n.shape# l.shape # 列表没有shape# 执行结果(6,)# 优先级:str > float > int# n = np.array([3.14,2])n = np.array([3.14,2,"hello"])n# 执行结果array(['3.14', '2', 'hello'], dtype='<U32')

2.使用 np 的常规函数创建

(1)np.ones(shape,dtype=None,order='C')

  • 创建一个所有元素为1的多维数组

  • 参数说明:

    • shape:形状

    • dtpye=None:元素类型

    • order:{'C','F'},可选,默认值:C 是否在内存总以行主(C-风格)或列主(Fortran-风格)顺序存储多维数据,一般默认即可

n = np.ones(shape=(3,))n# 执行结果array([1., 1., 1.])n = np.ones(shape=(3,4))n# 执行结果array([[1., 1., 1., 1.],       [1., 1., 1., 1.],       [1., 1., 1., 1.]])n = np.ones(shape=(3,4),dtype=np.int16)n# 执行结果array([[1, 1, 1, 1],       [1, 1, 1, 1],       [1, 1, 1, 1]], dtype=int16)       n = np.ones(shape=(3,4,5),dtype=np.int16)n# 执行结果array([[[1, 1, 1, 1, 1],        [1, 1, 1, 1, 1],        [1, 1, 1, 1, 1],        [1, 1, 1, 1, 1]],       [[1, 1, 1, 1, 1],        [1, 1, 1, 1, 1],        [1, 1, 1, 1, 1],        [1, 1, 1, 1, 1]],       [[1, 1, 1, 1, 1],        [1, 1, 1, 1, 1],        [1, 1, 1, 1, 1],        [1, 1, 1, 1, 1]]], dtype=int16)

(2)np.zeros(shape,dtype=float,order='C')

  • 创建一个所有元素读为0的多维数组

  • 参数说明

    • shape:形状

    • dtype=None:元素形状

n = np.zeros((5,5),dtype=np.int16)n# 执行结果array([[0, 0, 0, 0, 0],       [0, 0, 0, 0, 0],       [0, 0, 0, 0, 0],       [0, 0, 0, 0, 0],       [0, 0, 0, 0, 0]], dtype=int16)

(3)np.full(shape,full_value,dtype=None,order='C')

  • 创建一个所有元素都为指定元素的多维数组

  • 参数说明:

    • shape:形状

    • fill_value:填充值

    • dtype=None:元素类型

n = np.full(shape=(3,4),fill_value=8,dtype=np.int16)n# 执行结果array([[8, 8, 8, 8],       [8, 8, 8, 8],       [8, 8, 8, 8]], dtype=int16)

(4)np.eye(N,M=None,k=0,dtype=float)

  • 对角线为1其他的位置为0的二维数组

  • 参数说明:

    • N:行数

    • M:列数,默认为None,表示和行数一样

    • k=0:向右偏移0个位置

    • dtype=None:元素类型

# 对角线为1其他的位置为0的二维数组# 单位矩阵:主对角线都是1,其他都是0n = np.eye(6)n# 执行结果array([[1., 0., 0., 0., 0., 0.],       [0., 1., 0., 0., 0., 0.],       [0., 0., 1., 0., 0., 0.],       [0., 0., 0., 1., 0., 0.],       [0., 0., 0., 0., 1., 0.],       [0., 0., 0., 0., 0., 1.]])n = np.eye(6,6)n# 执行结果array([[1., 0., 0., 0., 0., 0.],       [0., 1., 0., 0., 0., 0.],       [0., 0., 1., 0., 0., 0.],       [0., 0., 0., 1., 0., 0.],       [0., 0., 0., 0., 1., 0.],       [0., 0., 0., 0., 0., 1.]])n = np.eye(6,9,dtype=np.int8)n# 执行结果array([[1, 0, 0, 0, 0, 0, 0, 0, 0],       [0, 1, 0, 0, 0, 0, 0, 0, 0],       [0, 0, 1, 0, 0, 0, 0, 0, 0],       [0, 0, 0, 1, 0, 0, 0, 0, 0],       [0, 0, 0, 0, 1, 0, 0, 0, 0],       [0, 0, 0, 0, 0, 1, 0, 0, 0]], dtype=int8)# k=2:向右偏移2个位置n = np.eye(6,6,k=2,dtype=np.int8)n#执行结果array([[0, 0, 1, 0, 0, 0],       [0, 0, 0, 1, 0, 0],       [0, 0, 0, 0, 1, 0],       [0, 0, 0, 0, 0, 1],       [0, 0, 0, 0, 0, 0],       [0, 0, 0, 0, 0, 0]], dtype=int8)       # k=-2:向左偏移2个位置n = np.eye(6,6,k=-2,dtype=np.int8)n# 执行结果array([[0, 0, 0, 0, 0, 0],       [0, 0, 0, 0, 0, 0],       [1, 0, 0, 0, 0, 0],       [0, 1, 0, 0, 0, 0],       [0, 0, 1, 0, 0, 0],       [0, 0, 0, 1, 0, 0]], dtype=int8)

(5)np.linspace(start,stop,num=50,endpoint=True,retstep=False,dtype=None)

  • 创建一个等差数列

  • 参数说明:

    • start:开始值

    • stop:结束值

    • num=50:等差数列中默认有50个数

    • endpoint=True:是否包含结束值

    • retstep=False:是否返回等差值(步长)

    • dtype=None:元素类型

# 等差数列:1,3,5,7,9......n = np.linspace(1,99,num=50,dtype=np.int16)n# 执行结果array([ 1,  3,  5,  7,  9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33,       35, 37, 39, 41, 43, 45, 47, 49, 51, 53, 55, 57, 59, 61, 63, 65, 67,       69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95, 97, 99],      dtype=int16)      # 不包含结束值n = np.linspace(1,99,num=50,dtype=np.int16,endpoint=False)n# 执行结果array([ 1,  2,  4,  6,  8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32,       34, 36, 38, 40, 42, 44, 46, 48, 50, 51, 53, 55, 57, 59, 61, 63, 65,       67, 69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95, 97],      dtype=int16)      # retstep=True:显示步长n = np.linspace(1,99,num=50,dtype=np.int16,retstep=True)n# 执行结果(array([ 1,  3,  5,  7,  9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33,        35, 37, 39, 41, 43, 45, 47, 49, 51, 53, 55, 57, 59, 61, 63, 65, 67,        69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95, 97, 99],       dtype=int16), 2.0)

(6)np.arange([start,]stop,[step,]dtype=None)

  • 创建一个数值范围的数组

  • 和 Python 中 range 功能类型

  • 参数说明:

    • start:开始值(可选)

    • stop:结束值(不包含)

    • step:步长(可选)

    • dtype=None:元素类型

# 不包含结束值n = np.arange(10)n# 执行结果array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])# 设置开始值n = np.arange(2,10)n# 执行结果array([2, 3, 4, 5, 6, 7, 8, 9])# 设置步长n = np.arange(2,10,2)n# 执行结果array([2, 4, 6, 8])

(7)np.random.randint(low,high=None,size=None,dtype='I')

  • 创建一个随机整数的多维数组

  • 参数说明:

    • low:最小值

    • high=None:最大值

      • high=None时,生成的数值在【0,low)区间内

      • 如果使用high这个值,则生成的数值在【low,high)区间

    • size=None:数组形状,默认只输出一个随机数

    • dtype=None:元素类型b

# 随机整数,范围:[0,3)n = np.random.randint(3)n# 执行结果2# 随机整数,范围:[3,10)n = np.random.randint(3,10)n# 执行结果7# 随机整数:一维数组n = np.random.randint(3,10,size=6)n# 执行结果array([3, 9, 9, 9, 3, 5])# 随机整数:二维数组n = np.random.randint(3,10,size=(3,4))n# 执行结果array([[6, 6, 4, 7],       [7, 8, 3, 7],       [5, 9, 7, 6]])       # 随机整数:三维数组n = np.random.randint(3,10,size=(3,4,5))n# 执行结果array([[[3, 6, 8, 6, 3],        [3, 5, 3, 5, 9],        [5, 7, 5, 6, 8],        [5, 5, 5, 9, 9]],       [[5, 5, 3, 6, 9],        [8, 8, 7, 8, 9],        [6, 5, 7, 5, 3],        [8, 5, 3, 4, 8]],       [[5, 7, 3, 3, 8],        [5, 9, 9, 9, 4],        [3, 6, 3, 4, 9],        [5, 7, 7, 4, 5]]])        # 随机整数:三维数组n = np.random.randint(0,256,size=(20,40,3))nplt.imshow(n)# 执行结果<matplotlib.image.AxesImage at 0x19507854a90>

(8)np.random.randn(d0,d1,...,dn)

  • 创建一个服从标准正态分布的多维数组

    • 标准正态分布又称为 u 分布,是以 0 为均数,以 1 为标准差的正态分布,记为 N(0,1)标准正态分布,在 0 左右出现的概率最大,越远离出现的概率越低

  • 创建一个所有元素为 1 的多维数组

  • 参数说明:

    • dn:第 n 个维度的数值

n = np.random.randn()n# 执行结果-0.3152803212777383n = np.random.randn(10)n# 执行结果array([-1.08674923, -0.84266234,  0.48315194, -0.27384792, -0.22261324,        0.35111371,  1.63799966, -0.74853446,  0.52026937,  0.03269324])n = np.random.randn(3,4)n# 执行结果array([[ 0.05467138,  0.71906585,  1.71433002,  0.68904993],       [-1.17094149, -0.95344073,  0.76602977, -1.22046271],       [ 1.45891993,  1.40378872, -0.89364469, -1.29611593]])

(9)np.random.normal(loc=0.0,scale=1.0,size=None)

  • 创建一个服从正态分布的多维数组

  • 参数说明:

    • loc=0.0:均值,对应着正态分布的中心

    • scale:标准差,对应分布的宽度,scale越大,正态分布的曲线越矮胖,scale越小,曲线越高瘦

    • size=None:数组形状

n = np.random.normal(loc=100)n# 执行结果98.54896577995035n = np.random.normal(loc=100,scale=10)n# 执行结果109.93226548891414n = np.random.normal(loc=100,scale=10,size=(3,4))n# 执行结果array([[106.55863188,  99.7947272 ,  92.6754544 ,  83.47585069],       [104.12500667, 109.83623019,  96.68665303,  96.47597136],       [ 90.24713131,  90.28364275,  93.38309007,  83.58287443]])

(10)np.random.random(size=None)

  • 创建一个元素为 0-1(左闭右开)的随机数的多维数组

  • 参数说明:

    • size=None:数组形状

n = np.random.random()n# 执行结果0.31199272530455857n = np.random.random(size=(3,4))n# 执行结果array([[0.08444408, 0.07450235, 0.88522599, 0.86113378],       [0.82065362, 0.97504932, 0.65321015, 0.96921815],       [0.95734724, 0.17062751, 0.58630317, 0.62395388]])

(11)np.random.rand(d0,d1,...,dn)

  • 创建一个元素为 0-1(左闭右开)的随机数的多维数组

  • 和 np.random.random 功能类似,掌握其中一个即可

  • 参数说明:

    • dn:第 n 个维度的数值

n = np.random.rand()n# 执行结果0.03291695735466904n = np.random.rand(3,4)n# 执行结果array([[0.15867292, 0.85912693, 0.67912155, 0.95042762],       [0.84022126, 0.85000877, 0.06752424, 0.71760504],       [0.97089325, 0.86010712, 0.77839465, 0.44999928]])

这篇关于NumPy创建ndarray数组大揭秘的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/871449

相关文章

Window Server创建2台服务器的故障转移群集的图文教程

《WindowServer创建2台服务器的故障转移群集的图文教程》本文主要介绍了在WindowsServer系统上创建一个包含两台成员服务器的故障转移群集,文中通过图文示例介绍的非常详细,对大家的... 目录一、 准备条件二、在ServerB安装故障转移群集三、在ServerC安装故障转移群集,操作与Ser

Window Server2016 AD域的创建的方法步骤

《WindowServer2016AD域的创建的方法步骤》本文主要介绍了WindowServer2016AD域的创建的方法步骤,文中通过图文介绍的非常详细,对大家的学习或者工作具有一定的参考学习价... 目录一、准备条件二、在ServerA服务器中常见AD域管理器:三、创建AD域,域地址为“test.ly”

Java 字符数组转字符串的常用方法

《Java字符数组转字符串的常用方法》文章总结了在Java中将字符数组转换为字符串的几种常用方法,包括使用String构造函数、String.valueOf()方法、StringBuilder以及A... 目录1. 使用String构造函数1.1 基本转换方法1.2 注意事项2. 使用String.valu

numpy求解线性代数相关问题

《numpy求解线性代数相关问题》本文主要介绍了numpy求解线性代数相关问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 在numpy中有numpy.array类型和numpy.mat类型,前者是数组类型,后者是矩阵类型。数组

Python在固定文件夹批量创建固定后缀的文件(方法详解)

《Python在固定文件夹批量创建固定后缀的文件(方法详解)》文章讲述了如何使用Python批量创建后缀为.md的文件夹,生成100个,代码中需要修改的路径、前缀和后缀名,并提供了注意事项和代码示例,... 目录1. python需求的任务2. Python代码的实现3. 代码修改的位置4. 运行结果5.

使用IntelliJ IDEA创建简单的Java Web项目完整步骤

《使用IntelliJIDEA创建简单的JavaWeb项目完整步骤》:本文主要介绍如何使用IntelliJIDEA创建一个简单的JavaWeb项目,实现登录、注册和查看用户列表功能,使用Se... 目录前置准备项目功能实现步骤1. 创建项目2. 配置 Tomcat3. 项目文件结构4. 创建数据库和表5.

使用SpringBoot创建一个RESTful API的详细步骤

《使用SpringBoot创建一个RESTfulAPI的详细步骤》使用Java的SpringBoot创建RESTfulAPI可以满足多种开发场景,它提供了快速开发、易于配置、可扩展、可维护的优点,尤... 目录一、创建 Spring Boot 项目二、创建控制器类(Controller Class)三、运行

JAVA中整型数组、字符串数组、整型数和字符串 的创建与转换的方法

《JAVA中整型数组、字符串数组、整型数和字符串的创建与转换的方法》本文介绍了Java中字符串、字符数组和整型数组的创建方法,以及它们之间的转换方法,还详细讲解了字符串中的一些常用方法,如index... 目录一、字符串、字符数组和整型数组的创建1、字符串的创建方法1.1 通过引用字符数组来创建字符串1.2

手把手教你idea中创建一个javaweb(webapp)项目详细图文教程

《手把手教你idea中创建一个javaweb(webapp)项目详细图文教程》:本文主要介绍如何使用IntelliJIDEA创建一个Maven项目,并配置Tomcat服务器进行运行,过程包括创建... 1.启动idea2.创建项目模板点击项目-新建项目-选择maven,显示如下页面输入项目名称,选择

vue如何监听对象或者数组某个属性的变化详解

《vue如何监听对象或者数组某个属性的变化详解》这篇文章主要给大家介绍了关于vue如何监听对象或者数组某个属性的变化,在Vue.js中可以通过watch监听属性变化并动态修改其他属性的值,watch通... 目录前言用watch监听深度监听使用计算属性watch和计算属性的区别在vue 3中使用watchE