机器视觉学习笔记(一)np.zeros和np.ones函数

np.zeros和np.ones函数总结

列表、元组、数组的不同:
列表: 即list, 是python内置的数据类型;列表内的值是可以改变的; 使用列表赋值时,得到了原始列表的引用, 所以呢,它们共享内存,如果修改其中一个,另一个也会修改了。 它的形式是: a = [1, 2, 3, 4, 5]
元组: 即tuple,也是python内置的类型;元组内的值是不可以改变的。 它的形式是: b = (1, 2, 3, 4, 5)
数组: 数组是 numpy模块里的ndarray对象, 它可以表示多维数组。
其次,为什么numpy中的数组ndarray的存储形式与list的形式的不同:
numpy的ndarry的类型是这样的[ 1 2 3 4 5] 中间是没有逗号的。
而python的基本类型list 是[ 1 ,2, 3,4, 5]这样的。

列表是python中最原始的一种数据类型,这种数据类型可能占用的空间以及运算速度会比numpy慢很多
使用方法如下:
import numpy as np

a = np.array([[1 ,2 ,4 ,5 ,3],
[51,86,43,29,64]])

b = np.ones(shape) #根据shape生成一个全1数组,shape是元组类型
c = np.zeros(shape) #根据shape生成一个全0数组,shape是元组类型
1234567
一开始没有注意到shape是元组类型,于是产生了一个疑问。
shape到底是一个元组呀还是一个数组(列表)?
于是,我就试了试一下两种代码:
b = np.ones((3,6))
b = np.ones([3,6])
12
发现两者都能创建成功,而且编译器也没报错,然后我的疑问就更大了,就去看这俩函数的底层,如下:
@set_module(‘numpy’)
def ones(shape, dtype=None, order=‘C’):
“”"
Return a new array of given shape and type, filled with ones.

Parameters
----------
shape : int or sequence of ints
    Shape of the new array, e.g., ``(2, 3)`` or ``2``.
dtype : data-type, optional
    The desired data-type for the array, e.g., `numpy.int8`.  Default is
    `numpy.float64`.
order : {'C', 'F'}, optional, default: C
    Whether to store multi-dimensional data in row-major
    (C-style) or column-major (Fortran-style) order in
    memory.

Returns
-------
out : ndarray
    Array of ones with the given shape, dtype, and order.

123456789101112131415161718192021
发现,底层解释中shape为:
int or sequence of ints
Shape of the new array, e.g., (2, 3) or 2.
意思是: int或int的序列
新数组的形状,例如,(2, 3)或2 。
因此,我理解是——
其中,序列的含义为:列表、元组、数组或其他序列类型。所以,shape只要是个int的序列就行了。
但是,我在网上查了大部分的教程发现在介绍shape时都是直接说shape是一个元组,至于原因也没说,就去查了一下官方文档如下:
对于shape函数,官方文档是这么说明:
the dimensions of the array. This is a tuple of integers indicating the size of the array in each dimension.
意思是:数组的维度。这是一个整数的元组,元组中的每一个元素对应着每一维度的大小(size)。
既然,官方文档已经明确指出shape为整数的元组,那我们平时在使用的时候也就用元组,不要去用list以避免造成不必要的错误。
总结:
numpy中数组的shape属性的特点——
1.元组元素的个数等于数组的维度
2.元组中每一个元素又代表每一维度的size(元素的个数0)
3.元组中从左到右,依次为第一维度中元素的个数,第二维度中元素的个数…第n维度元素的个数
例如:若某一个numpy数组a 调用shape输出为(1,2,3,4) 我们根据上面的结论,就可以很快的知道这是一个4维的数组。
其中,第一个维度只有1个元素。第二个维度有2个元素,第三个维度也有3个元素,最后的第四个维度有4个元素。
对于二维的元组(n,m)可以看作为一个二维数组,也就可以看成一个具有n行m列的矩阵。
转载:https://blog.csdn.net/henu1710252658/article/details/98509533?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_title-2&spm=1001.2101.3001.4242

  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值