numpy数组和传统数组,numpy数组用法

  numpy数组和传统数组,numpy数组用法

  Python中的数据操作几乎等同于NumPy数组操作,甚至新的熊猫工具也是建立在NumPy数组的基础上。

  数组的属性决定了数组的大小、形状、存储大小和数据类型。

  数组的索引获取并设置数组中每个元素的值。

  获取或设置大数组中较小的子数组。

  数组的变形会改变给定数组的形状。

  拼接拆分数组将多个数组合二为一,将一个数组拆分成多个。

  目录

  数组索引:获取单个元素

  数组切片:获取子数组

  阵列变形:

  阵列拼接和拆分:

  NumPy数组的属性

  每个数组都有nidm(数组的维度)、shape(数组的每个维度的大小)和size(数组的总大小)属性、dtype(数组的数据类型)、itemsize(每个数组元素的字节大小)、nbytes(表示数

  总组字节大小的属性) (

  总的来说,可以认为

  nbytes

  项目大小

  大小

  的乘积大小相等。):

  设置一个随机种子

  # print (np.random.randint (10,size=6)) #一维数组

  # print (np.random.randint (10,size=(3,4)) # 2D数组

  Array _ 3=np.random.randint (10,size=(3,4,5)) # 3D数组

  Print(数组的数据类型,array _ 3 . dtype );维度 array _ 3;ndim,;数组“array_3.shape”的每个维度的大小;数组 array_3.size 的总大小

  Print(数组的总字节大小,array_3.nbytes,;每个数组元素的字节大小,array_3.itemsize)

  # nbytes=itemsize*size

  打印运行结果(array_3):

  数组的数据类型int32数组维数3;数组(3,4,5)的每个维度的大小;阵列60的总大小

  总数组字节大小240;每个数组元素的字节大小是4

  [[[5 0 3 3 7]

  [9 3 5 2 4]

  [7 6 8 8 1]

  [6 7 7 8 1]]

  [[5 9 8 9 4]

  [3 0 3 5 0]

  [2 3 8 1 3]

  [3 3 7 0 1]]

  [[9 9 0 4 7]

  [3 2 7 2 0]

  [0 4 5 5 6]

  [8 4 1 4 9]]]

  进程结束,退出代码为0

  数组索引:获取单个元素

  在一维数组中:(和Python list一样,在一维数组中,也可以通过括号指定索引来获得第I个值(从0开始计数):)

  array_1=np.array([1,2,3,4,5,6])

  Print(array_1[0])运行结果:

  一个

  在以退出代码0结束的流程的多维数组中:(通过逗号分隔的索引元组获取元素:)

  Array _ 3=np.random.randint (10,size=(3,4,5)) # 3D数组

  Print(array_3[0][0][-1])运行结果:

  七

  以退出代码0结束的进程根据索引修改元素值:

  Array_3[0][0][-1]=8 #根据索引修改元素值

  Print(array_3[0][0][-1])运行结果:

  八

  进程结束,退出代码为0数组切片:获取子数组

  就像我们之前使用括号获得单个数组元素一样,我们也可以获得带有切片符号的子数组,切片符号使用冒号(

  )的意思是。

  NumPy

  切片语法和

  计算机编程语言

  表具有相同的标准切片语法。来获取数组

  的一个片段,可以通过以下方式使用:

  x[开始:停止:步进]

  如果以上3

  参数未指定,则它们将分别设置为默认值。

  开始=0

  、停止=

  尺寸的大小(

  尺寸大小

  步骤=1。我们会详细介绍。

  如何在一维和多维数组中得到子数组?

  一维子阵列:

  #一维子阵列

  array_1=np.arange(1,11)

  打印(数组_1)

  Print(array_1[:5]) #获取前5个元素

  Print(array_1[5:]) #获取索引5之后的元素

  Print(array_1[:2]) #每隔一个元素

  Print(array_1[5:2]) #从索引5开始,每隔一个元素打印一次

  Print(array_1[:-1]) #以相反的顺序输出所有元素

  Print(array_1[5:-2]) #从索引5开始,以相反的顺序每隔一个元素打印一次

  Print(array_1[:5:-2]) #以相反的顺序每隔一个元素,运行结果直到索引5:

  [ 1 2 3 4 5 6 7 8 9 10]

  [1 2 3 4 5]

  [ 6 7 8 9 10]

  [1 3 5 7 9]

  [ 6 8 10]

  [10 9 8 7 6 5 4 3 2 1]

  [6 4 2]

  [10 8]

  进程结束,退出代码为0多维子数组:

  #多维子阵列

  Array _ 3=np.random.randint (10,size=(3,4,5)) # 3D数组

  打印(数组_3)

  打印(-)

  Print(array_3[:2,2]) #取前两个子数组的前两行

  打印(-)

  Print(array_3[:0]) #每个子数组的第一行

  打印(-)

  Print(array_3[0,)#索引为0的数组的所有内容运行结果:

  [[[5 0 3 3 7]

  [9 3 5 2 4]

  [7 6 8 8 1]

  [6 7 7 8 1]]

  [[5 9 8 9 4]

  [3 0 3 5 0]

  [2 3 8 1 3]

  [3 3 7 0 1]]

  [[9 9 0 4 7]

  [3 2 7 2 0]

  [0 4 5 5 6]

  [8 4 1 4 9]]]

  -

  [[[5 0 3 3 7]

  [9 3 5 2 4]]

  [[5 9 8 9 4]

  [3 0 3 5 0]]]

  -

  [[5 0 3 3 7]

  [5 9 8 9 4]

  [9 9 0 4 7]]

  -

  [[5 0 3 3 7]

  [9 3 5 2 4]

  [7 6 8 8 1]

  [6 7 7 8 1]]

  流程转换已完成,退出代码为0数组:

  数组变形最灵活的实现是通过reshape()

  要实现的函数。

  如果这种方法可行,那么原始数组的大小必须与变形后的数组的大小相同。

  大小是一样的。如果满足这个条件,

  使再成形

  方法将使用原始数组之一。

  非重复视图。然而,现实情况是,在不连续数据缓存的情况下,通常不可能返回非副本视图。

  另一种常见的变形模式是将一维数组转换为行或列的二维矩阵。您也可以使用reshape方法,或者简单地在切片操作中使用它。

  纽axis

  关键词:

  代码重复:

  #将数字1~12放入一个43的矩阵中

  grid=np.arange(1,13)。整形((4,3))

  打印(网格)

  打印(-获取行向量)

  print(grid[np.newaxis,2:])

  打印(-获取列向量)

  打印(grid[:np.newaxis,1])运行结果:

  [[ 1 2 3]

  [ 4 5 6]

  [ 7 8 9]

  [10 11 12]]

  -得到线向量

  [[[ 7 8 9]

  [10 11 12]]]

  -获取列向量

  [[[ 1]]

  [[ 4]]

  [[ 7]]

  [[10]]]

  进程结束,退出代码为0

  阵列拼接和拆分:

  以上操作都是针对单个数组的,但有时需要将多个数组合并成一个或者将一个数组拆分成多个。接下来将详细描述这些操作。

  阵列拼接:

  拼接或连接

  NumPy

  中的两个数组主要由

  连接

  np.vstack

  np.hstack

  现在。

  代码重复:

  #一次拼接三个一维数组

  x=np.array([1,2,3])

  y=np.array([3,2,1])

  z=np.array([4,5,6])

  print(np.concatenate([x,y,z])

  #拼接二维数组

  打印(“拼接二维数组”)

  grid=np.array([[1,2,3],[4,5,6]])

  print(NP . concatenate([网格,网格,网格])

  print(np.concatenate([grid,grid,grid],axis=1))

  #垂直堆栈阵列

  打印(“垂直堆栈数组”)

  x=np.array([1,2,3])

  grid=np.array([[1,2,3],[4,5,6]])

  print(np.vstack([x,grid])

  #水平堆栈阵列

  打印(“水平堆栈数组”)

  x=np.array([[4],[7]])

  grid=np.array([[1,2,3],[4,5,6]])

  print(np.hstack([grid,x])

  # dstack沿第三维拼接数组

  打印(“沿第三维拼接数组”)

  a=np.array((1,2,3))

  b=np.array((2,3,4))

  print(np.dstack((a,b)))

  打印(“沿第三维拼接数组”)

  a=np.array([[1],[2],[3]])

  b=np.array([[2],[3],[4]])

  Print(np.dstack((a,b))运行结果:

  [1 2 3 3 2 1 4 5 6]

  二维数组

  [[1 2 3]

  [4 5 6]

  [1 2 3]

  [4 5 6]

  [1 2 3]

  [4 5 6]]

  [[1 2 3 1 2 3 1 2 3]

  [4 5 6 4 5 6 4 5 6]]

  垂直堆叠阵列

  [[1 2 3]

  [1 2 3]

  [4 5 6]]

  水平堆叠阵列

  [[1 2 3 4]

  [4 5 6 7]]

  沿着第三维拼接阵列

  [[[1 2]

  [2 3]

  [3 4]]]

  沿着第三维拼接阵列

  [[[1 2]]

  [[2 3]]

  [[3 4]]]

  进程的拆分以退出代码0数组结束:

  拼接的相反过程是分裂。分裂可以通过np.split实现。

  Np.hsplit和

  np.vsplit函数。您可以将一个索引列表作为参数传递给上面的函数。索引列表记录了分割点的位置:

  代码重复:

  #数组的拆分

  x=[1,2,3,99,99,3,2,1]

  x1,x2,x3=np.split(x,[3,5])

  打印运行结果(x1,x2,x3):

  [1 2 3] [99 99] [3 2 1]

  进程结束,退出代码为0

  值得注意的是n

  分割点将会得到

  一个

  子阵列。相关的np.hsplit

  np.vsplit的用法类似,np.dsplit。

  沿第三维拆分数组。

  grid=np.arange(16)。整形((4,4))

  打印(网格)

  打印( vsplit -)

  upper,lower=np.vsplit(grid,[2])

  打印(上)

  打印(下方)

  打印( hsplit -)

  left,right=np.hsplit(grid,[2])

  打印(左)

  打印(右)

  打印( dsplit -)

  x=np.arange(16).整形(2,2,4)

  打印(十)

  print(np.dsplit(x,2))运行结果:

  [[ 0 1 2 3]

  [ 4 5 6 7]

  [ 8 9 10 11]

  [12 13 14 15]]

  vsplit -

  [[0 1 2 3]

  [4 5 6 7]]

  [[ 8 9 10 11]

  [12 13 14 15]]

  hsplit -

  [[ 0 1]

  [ 4 5]

  [ 8 9]

  [12 13]]

  [[ 2 3]

  [ 6 7]

  [10 11]

  [14 15]]

  数字拆分-

  [[[ 0 1 2 3]

  [ 4 5 6 7]]

  [[ 8 9 10 11]

  [12 13 14 15]]]

  [数组([[[ 0,1],

  [ 4, 5]],

  [[ 8, 9],

  [12,13]]]),数组([[[ 2,3],

  [ 6, 7]],

  [[10, 11],

  [14, 15]]])]

  进程结束,退出代码为0

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: