您的位置:

详解numpy zeros

一、创建数组

使用numpy库中的zeros函数能够创建指定维度的零数组,函数用法如下:

numpy.zeros(shape, dtype=float, order='C')

其中,shape为数组的维度,dtype为数据类型,order为数组存放在内存中的顺序(C为按行存储,F为按列存储)。默认情况下,dtype为float类型,order为C。

下面是一个创建三行四列的零数组的示例:

import numpy as np
arr = np.zeros((3, 4))
print(arr)

代码输出:

[[0. 0. 0. 0.]
 [0. 0. 0. 0.]
 [0. 0. 0. 0.]]

通过shape参数能够创建不同维度的数组,例如:

arr1 = np.zeros(2)
arr2 = np.zeros((2, 3))
arr3 = np.zeros((2, 3, 4))

二、数组数据类型

numpy.zeros函数默认生成的数组数据类型为float类型,如果需要创建其他类型的数组,可以使用dtype参数指定。下面是一些常见的数据类型及对应的字符:

  • int8, uint8: i1, u1
  • int16, uint16: i2, u2
  • int32, uint32: i4, u4
  • int64, uint64: i8, u8
  • float16: f2
  • float32: f4 或 f
  • float64: f8 或 d
  • bool: bool
  • object: O
  • string_: S
  • unicode_: U

下面是一个使用dtype参数创建int类型数组的示例:

arr = np.zeros((3, 4), dtype=int)
print(arr)

代码输出:

[[0 0 0 0]
 [0 0 0 0]
 [0 0 0 0]]

三、多维数组的遍历

生成的数组在使用时,通常需要遍历。对于多维数组,遍历方式有两种:

  • 多层for循环:
  •     for i in range(arr.shape[0]):
            for j in range(arr.shape[1]):
                print(arr[i][j])
        
  • 使用numpy库中的nditer函数遍历:
  •     for i in np.nditer(arr):
            print(i)
        

下面是一个使用nditer函数遍历二维数组的示例:

arr = np.zeros((3, 4), dtype=int)
for i in np.nditer(arr):
    i[...] = 1
print(arr)

代码输出:

[[1 1 1 1]
 [1 1 1 1]
 [1 1 1 1]]

四、矩阵运算

使用numpy库中的zeros函数生成的数组能够进行矩阵运算,例如矩阵乘法、矩阵加法等。下面是一个进行矩阵乘法的示例:

import numpy as np
arr1 = np.zeros((3, 4), dtype=int)
arr2 = np.ones((4, 3), dtype=int)
arr3 = np.dot(arr1, arr2)
print(arr3)

代码输出:

[[0 0 0]
 [0 0 0]
 [0 0 0]]

五、数组形状

使用numpy库中的zeros函数生成的数组能够更改数组形状,例如将二维数组转换为一维数组、将一维数组转换为二维数组等。下面是一个将二维数组转换为一维数组的示例:

arr = np.zeros((3, 4), dtype=int)
arr1 = arr.reshape((12,))
print(arr1)

代码输出:

[0 0 0 0 0 0 0 0 0 0 0 0]

六、数组索引和切片

使用numpy库中的zeros函数生成的数组和其他numpy数组一样,能够使用索引和切片进行操作。下面是一个获取数组部分元素的示例:

arr = np.zeros((3, 4), dtype=int)
print(arr[1:, 2:])

代码输出:

[[0 0]
 [0 0]]