NumPy学习笔记(二)—— zeros_like()函数(包含zeros函数)

目录

  • 一、前言
    • 1、zeros()函数
    • 2、一言以蔽之
      • 参数
        • 1)shape:使用int型或者元组类型的数组
        • 2)dtype:数据类型(可选填,默认为numpy.float64)
        • 3)order:内存中的存储方式(可选填,默认为'C'存储/默认行优先存储)
        • 4)*
        • 5)like:传入array_like(可选填,1.20.0新添加的功能)
      • 返回值:ndarray
    • 3、简单代码
  • 二、zeros_like()函数
    • 1、一言以蔽之
      • 参数:
        • 1)a:array_like
        • 2)dtype:覆盖结果的数据类型(可选填)
        • 3)order:覆盖结果的内存布局
        • 4)subok:布尔类型(可选填)
        • 5)shape:整数或整数序列(可选填)
      • 返回值:ndarray
  • 三、简单代码
  • 四、总结

一、前言

我们在了解zeros_like函数之前,想先带大家了解一下zeros函数。

1、zeros()函数

如果已经熟练使用zeros函数的同学可以直接跳转到下一节!!!

先上一张官方手册:

英文版:
NumPy学习笔记(二)—— zeros_like()函数(包含zeros函数)_第1张图片

2、一言以蔽之

numpy.zeros()

参数

1)shape:使用int型或者元组类型的数组

2)dtype:数据类型(可选填,默认为numpy.float64)

比如我们常用的dtype = numpy.int32,基本上numpy的api都会有这个可选参数

3)order:内存中的存储方式(可选填,默认为’C’存储/默认行优先存储)

order:{‘C’,‘F’}

C代表行优先存储,F代表列优先存储

4)*

这个看图片没有解释啥意思,我也在学习

如果有知道的同学可以顺便帮忙补充一下

5)like:传入array_like(可选填,1.20.0新添加的功能)

简言之就是使用对象创建不属于NumPy的数组。如果array_like当做like传入的话,必须保证创建的数组对象要适用于刚刚通过like传入的参数。

听起来就头大,这里可以简单任务like要和array_like要匹配

返回值:ndarray

给定shape,dtype,order条件下的数组

3、简单代码

import numpy as np

# 创建填充数组
print(np.zeros(5))
## [0. 0. 0. 0. 0.]

# 内存中优先以列存储,结果输出与上述相同
print(np.zeros(3,order='F'))
## [0. 0. 0. 0. 0.]


# 创建填充二维(可类推三维)
print(np.zeros((3,2),dtype=np.int32))
## [[0 0]
##  [0 0]
##  [0 0]]

# 已有元组数据创建数组
arr = (2,3)
print(np.zeros(arr))
## [[0. 0. 0.]
##  [0. 0. 0.]]

二、zeros_like()函数

先上一张官方手册

英文版:
NumPy学习笔记(二)—— zeros_like()函数(包含zeros函数)_第2张图片

1、一言以蔽之

参数:

1)a:array_like

已经定义了这些返回类型的相同维度和数据类型的数组

2)dtype:覆盖结果的数据类型(可选填)

3)order:覆盖结果的内存布局

order={‘C’,‘F’,‘A’,‘K’}

C:使用C阶(行存储)

F:使用F阶(列存储)

A:如果数组a是连续的,则A等于F。否则A等于C

K:表示要尽可能的匹配到a的shape

4)subok:布尔类型(可选填)

如果是True,新创建的数组使用a的子类类型。

否则是基类数组。

默认为True。

5)shape:整数或整数序列(可选填)

覆盖之前结果的shape

如果order=‘K’,并且维度的数量不改变,将会一直保持order。

否则order='C’是隐含的

返回值:ndarray

和a同样的shape和数据类型(type)的子类零数组(向量)

三、简单代码

import numpy as np

x = np.arange(6)
# [0 1 2 3 4 5]

# x可以看做基类
x = x.reshape((2,3))
# [[0 1 2]
#  [3 4 5]]


# y可以看做子类,此时继承了x的shape
# y把x里的数据重新写为0了
y = np.zeros_like(x)
# [[0 0 0]
#  [0 0 0]]

x = np.arange(3.5,dtype = float)
# [0. 1. 2. 3.]

# 此时y继承了x的shape。并把数据重置为0
y = np.zeros_like(x)
# [0. 0. 0. 0.]

四、总结

以下为个人观察总结,要是有不对的地方,麻烦各位同学指出改正!!!

我在比较了onesones_like,以及zeroszeros_like函数之后发现了这两队函数都有很大的相似之处。

ones与zeros函数类似,只不过把数组中的0换成了1。

ones_like与zeros_like也类似。

------------------------------------------------------重点分割线-----------------------------------------------------------------

zeros/ones函数是根据给的条件创建一个未有的数组/向量

而zeros_like/ones_like是继承已知数组/向量a,照猫画虎创建一个子类数组/向量,把里面的数据全部置位0或1

------------------------------------------------------重点分割线-----------------------------------------------------------------

佐证来源:两者函数的返回值

zeros:Array of zeros with the given shape, dtype, and order.

zeros_like:Array of zeros with the same shape and type as a.

你可能感兴趣的:(Python编程,#,Numpy(1.21)学习笔记,小新的学习笔记,pytorch,python)