asarray详细解析

一、asarray和array的区别

asarray和array都是用于创建数组的函数,但它们之间还存在一些细微的差别。

首先,array可以接受任何序列对象,包括元组、列表等,而asarray则可以接受任何可迭代对象。其次,array会创造一个新的数组对象,而asarray则会尽可能地返回输入数组的视图(即,只会将数据转化为数组的形式,而不会开辟新的内存空间)。这意味着,如果原数组是内存不可修改的,asarray返回的数组也会是内存不可修改的。最后,当array处理无法转换为数组的对象时,会抛出异常,而asarray则会尝试将输入对象转换成数组形式。

import numpy as np

a = [1, 2, 3]
arr1 = np.array(a)
arr2 = np.asarray(a)

print(arr1)
print(arr2)

a[0] = 5

print(arr1)
print(arr2)

运行结果:

[1 2 3]
[1 2 3]
[1 2 3]
[5 2 3]

从运行结果可以看出来,array创建的数组和原数组不同,asarray创建的数组和原数组相同,并且当原数组变化时,asarray创建的数组也会随之变化。

二、asarray与vb的联系

asarray函数的概念和VB语言中的CVar()函数类似,函数用于将不同的变量类型转换成数组,进而进行数值运算操作。asarray函数可以将一个Python列表或其它的序列类型转换成NumPy数组。

import numpy as np

a = [1, 2, 3]
arr1 = np.asarray(a)

print(type(arr1))
print(arr1.shape)
print(arr1.dtype)

b = 'hello world'
arr2 = np.asarray(b, dtype='c')

print(type(arr2))
print(arr2.shape)
print(arr2.dtype)

运行结果:


(3,)
int64

(11,)
|S1

从上面的示例中可以看出,asarray可以将Python的字符串转换为NumPy数组,并且可以指定数据类型。

三、array选取相关

除了可以将列表或序列转换为NumPy数组之外,asarray函数还可以用于从现有的数组中创建新的数组。这种情况下,使用asarray的效果相当于使用array函数。比如,我们可以用asarray选取数组的某一部分,并用该部分创建一个新数组。

import numpy as np

a = np.array([[1, 2], [3, 4]])
arr1 = np.asarray(a)

print(type(arr1))
print(arr1)

arr2 = np.asarray(a, dtype=np.float64)

print(type(arr2))
print(arr2)

运行结果:


[[1 2]
 [3 4]]

[[1. 2.]
 [3. 4.]]

从结果中可以看出,asarray创建的数组与原数组相同,并且也可以指定数据类型。

四、asarray作为索引数组

另一个使用asarray函数的常见情况是作为索引数组使用。我们可以将一维索引数组转换成多维布尔数组来访问数组中的某些元素。

import numpy as np

data = np.arange(10)
index = np.array([2, 1, 3, 6])
arr1 = np.asarray(data[index])

print(arr1)

arr2 = np.zeros(10, dtype=bool)
arr2[index] = True
arr3 = data[arr2]

print(arr3)

运行结果:

[2 1 3 6]
[2 1 3 6]

以上示例展示了如何使用asarray将一维索引数组转换为多维索引,并从数据中选取所需元素。

五、总结

asarray函数是NumPy库中常用的工具之一,它可以从不同的数据源创建NumPy数组并将其视为一个NumPy数组。与array方法相比,asarray函数具有更多的优势,例如:能够接受可迭代对象等。在创建索引和选取元素时,asarray也是一个非常有用的工具。

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/293064.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-12-25 18:38
下一篇 2024-12-25 18:39

相关推荐

  • index.html怎么打开 – 详细解析

    一、index.html怎么打开看 1、如果你已经拥有了index.html文件,那么你可以直接使用任何一个现代浏览器打开index.html文件,比如Google Chrome、…

    编程 2025-04-25
  • Resetful API的详细阐述

    一、Resetful API简介 Resetful(REpresentational State Transfer)是一种基于HTTP协议的Web API设计风格,它是一种轻量级的…

    编程 2025-04-25
  • neo4j菜鸟教程详细阐述

    一、neo4j介绍 neo4j是一种图形数据库,以实现高效的图操作为设计目标。neo4j使用图形模型来存储数据,数据的表述方式类似于实际世界中的网络。neo4j具有高效的读和写操作…

    编程 2025-04-25
  • AXI DMA的详细阐述

    一、AXI DMA概述 AXI DMA是指Advanced eXtensible Interface Direct Memory Access,是Xilinx公司提供的基于AMBA…

    编程 2025-04-25
  • 关键路径的详细阐述

    关键路径是项目管理中非常重要的一个概念,它通常指的是项目中最长的一条路径,它决定了整个项目的完成时间。在这篇文章中,我们将从多个方面对关键路径做详细的阐述。 一、概念 关键路径是指…

    编程 2025-04-25
  • c++ explicit的详细阐述

    一、explicit的作用 在C++中,explicit关键字可以在构造函数声明前加上,防止编译器进行自动类型转换,强制要求调用者必须强制类型转换才能调用该函数,避免了将一个参数类…

    编程 2025-04-25
  • HTMLButton属性及其详细阐述

    一、button属性介绍 button属性是HTML5新增的属性,表示指定文本框拥有可供点击的按钮。该属性包括以下几个取值: 按钮文本 提交 重置 其中,type属性表示按钮类型,…

    编程 2025-04-25
  • crontab测试的详细阐述

    一、crontab的概念 1、crontab是什么:crontab是linux操作系统中实现定时任务的程序,它能够定时执行与系统预设时间相符的指定任务。 2、crontab的使用场…

    编程 2025-04-25
  • Vim使用教程详细指南

    一、Vim使用教程 Vim是一个高度可定制的文本编辑器,可以在Linux,Mac和Windows等不同的平台上运行。它具有快速移动,复制,粘贴,查找和替换等强大功能,尤其在面对大型…

    编程 2025-04-25
  • 网站测试工具的详细阐述

    一、测试工具的概述 在软件开发的过程中,测试工具是一个非常重要的环节。测试工具可以快速、有效地检测软件中的缺陷,提高软件的质量和稳定性。与此同时,测试工具还可以提高软件开发的效率,…

    编程 2025-04-25

发表回复

登录后才能评论