如何利用numpy快速获得一个全为0或1的ndarray变量?
发布于 作者:苏南大叔 来源:程序如此灵动~ 我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...
本文讲两个非常常见的numpy
快速获取数组的方式,获得ndarray
的成员全为零或者全为一。对,函数就是np.zeros()
和np.ones()
,功能就是获得全部为零或者一的ndarray
。两者功能上非常类似,所以合并放在同一篇文章里面。
苏南大叔的“程序如此灵动”博客,记录苏南大叔的代码编程经验文章。本文测试环境:win10
,python@3.11.0
,numpy@1.24.2
。
函数原型
原型如下:
numpy.zeros(shape, dtype=None, order='C')
numpy.ones(shape, dtype=None, order='C')
shape
是一个整数或整数元组,用于指定输出数组的形状。dtype
是数据类型,默认为float
。order
指定数组的存储顺序,默认为C
,即按行存储。修改成F
,意思是按列存储。
定义形状shape【最常用】
直接定义返回值的shape
即可。例如:
import numpy as np
s0 = np.array([0, 0, 0])
s1 = np.zeros(3)
s2 = np.ones((3,))
s3 = np.zeros((1, 3))
s4 = np.ones((3, 1))
print(s0, type(s0))
print(s1, type(s1))
print(s2, type(s2))
print(s3, type(s3))
print(s4, type(s4))
输出:
[0 0 0] <class 'numpy.ndarray'>
[0. 0. 0.] <class 'numpy.ndarray'>
[1. 1. 1.] <class 'numpy.ndarray'>
[[0. 0. 0.]] <class 'numpy.ndarray'>
[[1.]
[1.]
[1.]] <class 'numpy.ndarray'>
定义类型dtype【默认是float64】
这个不怎么常用,实际上就是说定义"数字零或一"是整形还是浮点型,没有啥特别的意义,默认是浮点型。
例如:
import numpy as np
s0 = np.array([0, 0, 0])
s1 = np.zeros(3, dtype="int")
s2 = np.ones((3,), dtype="int32")
s3 = np.zeros((1, 3), dtype="float")
s4 = np.ones((3, 1), dtype="float64")
s5 = np.zeros((2, 2), dtype=int)
s6 = np.ones((2, 2), dtype=float)
print(s0, s0.dtype)
print(s1, s1.dtype)
print(s2, s2.dtype)
print(s3, s3.dtype)
print(s4, s4.dtype)
print(s5, s5.dtype)
print(s6, s6.dtype)
输出:
[0 0 0] int32
[0 0 0] int32
[1 1 1] int32
[[0. 0. 0.]] float64
[[1.]
[1.]
[1.]] float64
[[0 0]
[0 0]] int32
[[1. 1.]
[1. 1.]] float64
定义存储顺序order【无感】
一共有两种,默认order=C
,按行存储。或者order=F
,按列存储。对于zeros()
或者ones()
来说,这个order
参数设置结果完全无感。(因为所有的成员变量都一样,order
就没有啥意义了。)
也并不是说这个order
参数没有什么作用,有作用。记住C
就是大家所需要的,F
参数会给大家带来认知上的困扰。
import numpy as np
s1 = np.zeros(3, dtype="int", order="C")
s2 = np.ones((3,), dtype="int32", order="F")
print(s1)
print(s2)
输出:
[0 0 0]
[1 1 1]
结束语
计算机代码就是零或者一的世界,直接生成全为零或者一的矩阵(数组)具有重要的数据初始化意义。更多python
经验文章,请点击:
如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。