数组操作
一、形状操作
import numpy as np
ary = np.array([[1,2,3],[4,5,6]])print(ary)print("-----------------------------------")#shape修改的是原有的ary.shape = (3,2)print(ary) #这里是直接对原有数组ary修改成三行两列的数组print("-----------------------------------")#reshape返回一个新的数组ary = ary.reshape(3,2)print(ary)print("------------------------------------")#将多维变为一维数组ary01 = ary.reshape((6,),order = 'F') #默认情况下参数order=‘C’以行为顺序展开,F(Fortran)意味以列展开ary03 = ary.flatten(order = 'F')print(ary01)print(ary03)print("-----------------------------------")#拓展:数组的形状t = np.arange(24)print(t)print(t.shape)print("-----------------------------------")#转换成二维t1 = t.reshape(4,6)print(t1)print(t1.shape)print("-----------------------------------")#转换成三维t2 = t.reshape(2,3,4)print(t2)print(t2.shape)
[[1 2 3][4 5 6]]-----------------------------------[[1 2][3 4][5 6]]-----------------------------------[[1 2][3 4][5 6]]------------------------------------[1 3 5 2 4 6][1 3 5 2 4 6]-----------------------------------[ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23](24,)-----------------------------------[[ 0 1 2 3 4 5][ 6 7 8 9 10 11][12 13 14 15 16 17][18 19 20 21 22 23]](4, 6)-----------------------------------[[[ 0 1 2 3][ 4 5 6 7][ 8 9 10 11]][[12 13 14 15][16 17 18 19][20 21 22 23]]](2, 3, 4)
二、ndarray转换成为list
#ndarray.tolist将数组转成lista = np.array([9,12,88,14,25])lst_a = a.tolist()print(lst_a)type(lst_a)
[9, 12, 88, 14, 25]list
三、ndarray数组索引/切片/循环操作
#跟列表索引切片类似#print(ary[start,end,step])#一维数组的切片操作ary04 = np.arange(1,10)print(ary04)print(ary04[3:7])print(ary04[:7:2])print(ary04[-7::-2])print("-----------------------------------")#多维数组的切片操作#数组对象[页,行,列],下标从0开始,到数组len-1结束ary05 = np.arange(1,28).reshape(3,3,3)print(ary05)print("-----------------------------------")#切出1页print(ary05[1,:,:])print("-----------------------------------")#切出所有页的1行print(ary05[:,1,:])print("-----------------------------------")#切出0页的1行1列print(ary05[0,1,1])
[1 2 3 4 5 6 7 8 9][4 5 6 7][1 3 5 7][3 1]-----------------------------------[[[ 1 2 3][ 4 5 6][ 7 8 9]][[10 11 12][13 14 15][16 17 18]][[19 20 21][22 23 24][25 26 27]]]-----------------------------------[[10 11 12][13 14 15][16 17 18]]-----------------------------------[[ 4 5 6][13 14 15][22 23 24]]-----------------------------------[ 5 14]
#多维数组循环操作ary06 = np.arange(16).reshape(4,4)ary06print(ary06.shape)print(ary06.ndim)#flat属性for element01 in ary06.flat: #方式一print(element01)for element02 in np.nditer(ary06): #方式二print(element02)
(4, 4)201234567891011121314150123456789101112131415
