一、简述
numpy.asarray(a,dtype=None,order=None)
功能描述:将输入数据(列表的列表,元组的元组,元组的列表等)转换为矩阵形式
a:数组形式的输入数据,包括list,元组的list,元组,元组的元组,元组的list和ndarrays
dtype:
数据类型由输入数据推导
二、实例
2.1将列表转化为数组
from numpy import asarray
my_list=[1,2,3,4]
asarray(my_list)
输出:array([1, 2, 3, 4])
注:asarray对已经是数组的数据不做任何处理也不会被拷贝,可以如下验证:
from numpy import array
array([1,2,3,4])
asarray(a) is a
输出:True
注:当dtype设置时,当且仅当dtpye不同时数据被会拷贝,比如:
a=array([1,2,3,4],dtype=numpy.float32)
asarray(a,dtype=numpy.float32) is a #输出 True
asarray(a,dtype=numpy.float64) is a #输出 False
2.2将列表的列表转化为矩阵
asarray([[1., 2], [3, 4], [5, 6]])
asarray([[1., 2], [3, 4], [5, 6]]).shape #输出 (3,2)
asarray([[1., 2], [3, 4], [5, 6]])[2,0] #取第二行0列的值为:5
2.3将元组的列表转化为矩阵
asarray([(1,2,3),(4,5,6),(7,8,9)])
---------------------------------------------------------区别
array和asarray都可以将结构数据转化为ndarray,但是主要区别就是当数据源是ndarray时,array仍然会copy出一个副本,占用新的内存,属于深拷贝。但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没有区别,都对元数据进行了复制。
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.]]
此时两者才表现出区别arr2没有改变,arr3和arr1同时被改变了,np.asarray属于浅拷贝。
补一下:
1.ndarray.max([int axis])
函数功能:求ndarray中指定维度的最大值,默认求所有值的最大值。
axis=0:求各column的最大值
axis=1:求各row的最大值
---------------------
作者:Gobsd
原文:https://blog.csdn.net/gobsd/article/details/56485177
作者:云梦泽1989
原文:https://blog.csdn.net/u012333003/article/details/34502651