目录
NumPy中asarray的用法函数说明输入参数返回值实例numpy中array,asarray和asanyarray区别先讨论默认情况下array、asarray,asanyarray的区别还受到两个参数控制下面举几个详细的例子NumPy中asarray的用法
函数说明
asarray(a, dtype=None, order=None)
转换输入为数组 array
输入参数
a
:类数组。输入数据,可以是转换为数组的任意形式。比如列表、元组列表、元组、元组元组、列表元组和 ndarray;dtype
:数据类型,可选。默认情况下,该参数与数据数据类型相同。order
:{"C","F"},可选。选择是行优先(C-style)或列优先(Fortran-style)存储。默认为行优先。
返回值
out
:ndarray。‘a’ 的数组形式。如果输入已经是匹配 dtype 和 order 参数的 ndarray 形式,则不执行复制,如果输入是 ndarray 的一个子类,则返回一个基类 ndarray。
实例
将列表转换为数组
(资料图片)
>>> a = [1, 2] >>> np.asarray(a) array([1, 2])
存在的数组不会被复制
>>> a = np.array([1, 2]) >>> np.asarray(a) is a True
如果 “dtype” 参数存在,只有当 dtype 不匹配的时候数组才被匹配。
>>> a = np.array([1, 2], dtype=np.float32) >>> np.asarray(a, dtype=np.float32) is a True >>> np.asarray(a, dtype=np.float64) is a False
与 “asanyarray” 不同,ndarray 子类不被转换
>>> issubclass(np.recarray, np.ndarray) True >>> a = np.array([(1.0, 2), (3.0, 4)], dtype="f4,i4").view(np.recarray) >>> np.asarray(a) is a False >>> np.asanyarray(a) is a True
numpy中array,asarray和asanyarray区别
先讨论默认情况下
1、array和asarray都可以将结构数据转化为ndarray,但是主要区别就是当数据源是ndarray时,array仍然会copy出一个副本,占用新的内存,但asarray不会。
也就是说当数据=是ndarray时,a = array(b),a和b不再是占用同一个内存的数组,而asarray中,a和b是同一个,改变b即改变a。
2、asarray和asanyarray的区别,np.asanyarray 会返回 ndarray 或者ndarray的子类,而np.asarray 只返回 ndarray. 也就是说对于ndarray的子类,asanyarray是不会复制的。
array、asarray,asanyarray的区别还受到两个参数控制
即copy和subok,下面具体举例
而array默认设置copy=True
假设a是一个数组,m是一个矩阵,它们的数据类型都是float32:
np.array(a)
和np.array(m)都将复制,因为这是默认行为。np.array(a,copy=False)
和np.array(m,copy=False)将复制m而不是a,因为m不是ndarray。np.array(a,copy=False,subok=True)
和np.array(m,copy=False,subok=True)都不会复制,因为m是矩阵,它是ndarray的子类。由于数据类型不兼容,数组(a,dtype=int,copy=False,subok=True)将同时复制两者。asanyarray
:如果输入是兼容的ndarray或类似matrix的子类(copy=False,subok=True),则将返回未复制的输入。
下面举几个详细的例子
array和asarray的区别
import numpy as np #example 1: data1=[[1,1,1],[1,1,1],[1,1,1]] arr2=np.array(data1) arr3=np.asarray(data1) data1[1][1]=2 print "data1:\n",data1 print "arr2:\n",arr2 print "arr3:\n",arr3
输出
data1:
[[1, 1, 1], [1, 2, 1], [1, 1, 1]]
arr2:
[[1 1 1]
[1 1 1]
[1 1 1]]
arr3:
[[1 1 1]
[1 1 1]
[1 1 1]]
结论:面对元组数据结构,array和asarray没有区别,都对元数据进行了复制并转化为ndarray。
import numpy as np #example 2: arr1=np.ones((3,3)) arr2=np.array(arr1) arr3=np.asarray(arr1) arr1[1]=2 print "arr1:\n",arr1 print "arr2:\n",arr2 print "arr3:\n",arr3
输出
arr1:
[[ 1. 1. 1.]
[ 2. 2. 2.]
[ 1. 1. 1.]]
arr2:
[[ 1. 1. 1.]
[ 1. 1. 1.]
[ 1. 1. 1.]]
arr3:
[[ 1. 1. 1.]
[ 2. 2. 2.]
[ 1. 1. 1.]]
结论:当数据源是ndarray时,array会copy出一个副本,占用新的内存,但asarray不会。
asarray和asanyarray的区别例子
issubclass(np.matrix, np.ndarray) True a = np.matrix([[1, 2]]) np.asarray(a) is a#返回的不是子类。 False np.asanyarray(a) is a#np.asanyarray(a)返回是a的子类 True
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
X 关闭
X 关闭
- 1转转集团发布2022年二季度手机行情报告:二手市场“飘香”
- 2充电宝100Wh等于多少毫安?铁路旅客禁止、限制携带和托运物品目录
- 3好消息!京东与腾讯续签三年战略合作协议 加强技术创新与供应链服务
- 4名创优品拟通过香港IPO全球发售4100万股 全球发售所得款项有什么用处?
- 5亚马逊云科技成立量子网络中心致力解决量子计算领域的挑战
- 6京东绿色建材线上平台上线 新增用户70%来自下沉市场
- 7网红淘品牌“七格格”chuu在北京又开一家店 潮人新宠chuu能红多久
- 8市场竞争加剧,有车企因经营不善出现破产、退网、退市
- 9北京市市场监管局为企业纾困减负保护经济韧性
- 10市场监管总局发布限制商品过度包装标准和第1号修改单