一,多维数组
1.numpy中的多维数组是numpy.ndarray类类型的对象,可用于表示数据结构中任意维度的数组
2.创建多维数组的对象
方法一:numpy.arange(起始值,终止值,步长),默认起始值是0,步长是1,终止值不可缺省,这个返回的是数组
方法二:numpy.array(任何可被解释成数组的容器)这是一个函数,这个数组内部储存是连续的,要求数据是同一类型。
3.dnarray.dtype属性表示元素的数据类型
import numpy as np a = np.arange(10) #[0 1 2 3 4 5 6 7 8 9] b = np.arange(1,10) #[1 2 3 4 5 6 7 8 9] c = np.arange(1,10,2) #[1 3 5 7 9] print(a) print(b) print(c) d = np.array([]) #空数组 e = np.array([1,2,3,4]) #一位数组 f = np.array([[1,2,3],[4,5,6]]) #二维数组 print(d) print(e) print(f) #查看这些数据类型 print(type(a)) #<class 'numpy.ndarray'> print(type(e)) #<class 'numpy.ndarray'> print(type(e[0])) #<class 'numpy.int32'> print(a.dtype) #int32 print(e.dtype) #int32 print(f.dtype) #int32
这里边有一个astype()函数
a = np.array(['1','2','3','4'],dtype=np.int32) print(a.dtype) #int32 b = a.astype(np.str) #这个函数是用来修改为指定的数据类型 print(type(b[0])) #<class 'numpy.str_'>
#在同一个数组里边我们可以强制去放一些不同的数据类型 a = np.array([('ABCD',[1,2,3])],dtype='U4,3i4') #U是字符串的简称,3i4的i4表示的是int32其中3表示3个int32的数据 print(a) #[('ABCD', [1, 2, 3])] print(a[0]['f0']) #ABCD print(a[0]['f0'][0]) #A print(a[0]['f0'][1]) #B print(a[0]['f0'][2]) #C #我们还可以指定名称来代替上边的f0 b = np.array([('ABCD',[1,2,3])],dtype=[ ('name',np.str_,4), ('scores',np.int32,3) ]) print(b[0]['name']) #ABCD print(b[0]['name'][0])#A print(b[0]['name'][1])#B print(b[0]['name'][2])#C
#其中'names''formats'不能变
c = np.array([('ABCD',[1,2,3])],dtype={
'names':['name','scores'],
'formats':['U4','3i4']
})
print(c)
print(c[0]['name'])#ABCD
print(c[0]['name'][0])#A
print(c[0]['name'][1])#B
print(c[0]['name'][2])#C
改变数组的维度:
1.视图变维:针对同一数组获取不同维度的数组视图
数组.reshape(新维度)获得一个数组的新维度视图
数组.ravel()获取数组的一维视图
2.复制变维
针对同一数组获取不同维度的数组副本
数组.flatten()返回一个数组的一维副本
3.就地变维
直接使用数组.shape = ()就会把源数组的维度改变
还可以使用数组.resize()可以改变这个数组的维度
arr1 = np.arange(1,9) print(arr1)#[1 2 3 4 5 6 7 8] arr1.shape = (2,2,2) print(arr1) # [[[1 2] # [3 4]] # # [[5 6] # [7 8]]]