本期介绍的函数:
文章目录
从列表生成ndarray
1. 基本操作:
list=[[1,2,3],[4,5,6]]
a=np.array(list)
# output
# array([[1, 2, 3],
# [4, 5, 6]])
2. 指定维度
例如我们想生成维度为2的ndarray
list=[1,2,3]
a=np.array(list)
# 结果为
# array([1, 2, 3])
list=[1,2,3]
a=np.array(list,ndmin=2)
# 结果为
# array([[1, 2, 3]])
# a.shape=(1,3)
3. 指定数据类型
list=[1,2,3]
a=np.array(list,dtype=complex)
# 结果
# array([1.+0.j, 2.+0.j, 3.+0.j])
array和asarray的区别
简言之,如果转换的是列表,改变列表的值后,ndarray都不改变
list=[1,2,3]
a=np.array(list)
b=np.asarray(list)
print('a=',a,'\nb=',b)
list[1]=888
print('a=',a,'\nb=',b)
结果
a= [1 2 3]
b= [1 2 3]
a= [1 2 3]
b= [1 2 3]
而如果是ndarray,则array不变,asarray改变
list=np.array([1,2,3])
a=np.array(list)
b=np.asarray(list)
print('a=',a,'\nb=',b)
list[1]=888
print('a=',a,'\nb=',b)
结果
a= [1 2 3]
b= [1 2 3]
a= [1 2 3]
b= [ 1 888 3]
这里类似于如下的道理
numpy中的copy
fromfile和loadtxt
详细可参见
NumPy 文件存取 tofile,fromfile, load,save
1. fromfile的用法
把a存入二进制文件
list=np.array([1,2,3])
a=np.array(list)
a.tofile('a.bin')
b=np.fromfile('a.bin',dtype=a.dtype)# dtype是a的数据类型
Out[26]: array([1, 2, 3])
2. loadtxt的用法
常用参数解释
usecols :which columns to read
delimiter: 数之间的分隔符,默认是空格 whithspace
unpack: 读取的矩阵是否做转置,True是做转置
a=np.loadtxt('a.txt')
array([[1., 2., 3.],
[4., 5., 6.],
[7., 8., 9.]])
而如果读取1,3两列:
a=np.loadtxt('a.txt',usecols=(0,2))
array([[1., 3.],
[4., 6.],
[7., 9.]])
如果文件里的分割符改为’,’
a=np.loadtxt('a.txt',delimiter=',')
array([[1., 2., 3.],
[4., 5., 6.],
[7., 8., 9.]])
fromiter
creat a new 1D array from an iterable object
iterable=(x*x for x in range(10))# 注意这不是tuple
a=np.fromiter(iterable,dtype=float)
array([ 0., 1., 4., 9., 16., 25., 36., 49., 64., 81.])