Numpy

作者: zhchhhemmm | 来源:发表于2020-07-26 12:24 被阅读0次
Ndarray对象

NumPy 最重要的一个特点是其 N 维数组对象 ndarray
ndarray 对象是用于存放同类型元素的多维数组
ndarray 内部由以下内容组成:

  • 一个指向数据(内存或内存映射文件中的一块数据)的指针。
  • 数据类型或 dtype,描述在数组中的固定大小值的格子。
  • 一个表示数组形状(shape)的元组,表示各维度大小的元组。
  • 一个跨度元组(stride),其中的整数指的是为了前进到当前维度下一个元素需要"跨过"的字节数。
    创建一个 ndarray 只需调用 NumPy 的 array 函数即可:
numpy.array(object, dtype = None, copy = True, order = None, subok = False, ndmin = 0)
image.png

插:
numpy array 类的reshape的用法
eg:

x = np.zeros((2,3,4))
x 是一个三维的零向量
x.reshape(2,3,2,2)
x 变成四维

x.reshape(-1)
返回x直接展开为1维的数组,但是x不变。和x.reshape(1,-1)等价
x 的总元素个数: 2*3*4 = 24个
那么x.reshape(n,-1) 返回x展开成(n, 24/n)的数组
同理:x.reshape(-1, n)返回x展开成(24/n, n)的数组
x.reshape(n1,n2,-1) 返回x展开成 (n1, n2, 24/(n1*n2))的数组

ndarray的一些常见属性:
  • ndarray.ndim:
    秩,即轴的数量或维度的数量

  • ndarray.shape:
    数组的维度,对于矩阵,n 行 m 列
    返回值是一个元组
    如:a = np.array([[1,2,3],[4,5,6]])
    a.shape -> (2,3)
    通过给shape赋值还可以改变ndarray的结构:


    image.png
  • ndarray.size:
    数组元素的总个数,相当于 .shape 中 n*m 的值

Numpy创建数组
  • numpy.empty
    numpy.empty 方法用来创建一个指定形状(shape)、数据类型(dtype)且未初始化的数组:
    numpy.empty(shape, dtype = float, order = 'C')


    image.png

注意 : 数组元素为随机值,因为它们未初始化。

  • numpy.zeros
    创建指定大小的数组,数组元素以 0 来填充:
    numpy.zeros(shape, dtype = float, order = 'C')
    注: 默认为浮点数,可以自己设置数字类型,eg:
    y = np.zeros((5,), dtype = np.int)
  • numpy.ones
    用 1 来填充数组
Numpy从已有的数组创建数组:
  • numpy.asarray
    numpy.asarray(a, dtype = None, order = None)


    image.png

    可以把列表,元组等作为参数a传入asarray中转化为ndarray

  • numpy.frombuffer
    numpy.frombuffer 用于实现动态数组。
    numpy.frombuffer 接受 buffer 输入参数,以流的形式读入转化成 ndarray 对象。
  • numpy.fromiter
    numpy.fromiter 方法从可迭代对象中建立 ndarray 对象,返回一维数组。
NumPy 从数值范围创建数组
  • numpy.arange
numpy.arange(start, stop, step, dtype)
start : 起始值,默认为0
stop : 终止值(不包含)
step: 步长,默认为1
dtype:返回ndarray的数据类型,如果没有提供,则会使用输入数据的类型。
x = np.arange(5) 
x -> [0  1  2  3  4]
  • numpy.linspace
    numpy.linspace 函数用于创建一个一维数组,数组是一个等差数列构成的,格式如下:
np.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)
start : 序列的起始值
stop:序列的终止值,如果endpoint为true,该值包含于数列中
num : 要生成的等步长的样本数量,默认为50
endpoint : 该值为 true 时,数列中包含stop值,反之不包含,默认是True。
retstep : 如果为 True 时,生成的数组中会显示间距,反之不显示。 
dtype: ndarray 的数据类型

扩展:
b =np.linspace(1,10,10).reshape([10,1])
b ->
[[ 1.]
[ 2.]
[ 3.]
[ 4.]
[ 5.]
[ 6.]
[ 7.]
[ 8.]
[ 9.]
[10.]]

  • numpy.logspace
    numpy.logspace 函数用于创建一个于等比数列。格式如下:
np.logspace(start, stop, num=50, endpoint=True, base=10.0, dtype=None)
注:
start : 起始值为 base ^ start  eg:base = 10 start = 1,起始值为10,start = 2 ,起始值为100
stop:同理
剩余同理
NumPy 切片和索引
切片
  • slice 定义切片:
a = np.arange(10)
s = slice(2,7,2) # 从索引2开始切,到索引7截至,步长为2
print(a[s]) -> [2,4,6]
  • 冒号切片:
    和python 的list切片一致
  • 带有省略号的切片:
a = np.array([[1,2,3],[3,4,5],[4,5,6]]) 
a[...,1] # 第二列元素  -> [2 4 5]
a[1,...] # 第二行元素 -> [3,4,5]
a[...,1:] # 第二列及剩下的所有元素:
[[2 3]
 [4 5]
 [5 6]]
Numpy 广播:

例子:
设有两个数组 a 和 b,如果两个数组的形状相同,a.shape == b.shape , 那么
a*b 的结果就是a与b数组对应为相乘。这要求a和b维度相同而且各维度的长度相同。
当运算中的两个数组形状不相同时,numpy自动触发广播机制。

a = np.array([[ 0, 0, 0],
           [10,10,10],
           [20,20,20],
           [30,30,30]])
b = np.array([1,2,3])
print(a + b)
->
[[ 1  2  3]
 [11 12 13]
 [21 22 23]
 [31 32 33]]  

由此可见,numpy自动把 b 变化成了 [[1,2,3],[1,2,3],[1,2,3],[1,2,3]],以便和a做相加

  • np.tile(a,(m,n))
    就是将矩阵 a 横向复制为原来的m倍,纵向赋值为原来的n倍
数组修改操作
image.png

待续

相关文章

  • 科学计算库numpy的执行示例

    numpy1 numpy2 numpy3 numpy4

  • numpy中的常量

    Constants 正无穷 numpy.inf numpy.Inf numpy.Infinity numpy.in...

  • NumPy学习资料

    Numpy 中文资料 NumPy 中文文档 NumPy 中文用户指南 NumPy 中文参考手册

  • Numpy基础

    安装Numpy Numpy Numpy属性 ndim:纬度 shape:行数和列数 size:元素个数 Numpy...

  • Numpy和Pandas基本操作速查

    """ numpy 基本操作 """'''安装 Numpy 的方法:pip install numpy''''''...

  • numpy 基础

    numpy 基础 导入numpy 版本 np常用方法 numpy.array 的基本属性 numpy.array ...

  • Numpy入门

    1、熟悉 numpy 的基础属性 2、numpy 创建 array 3、numpy的基础运算 4、numpy索引 ...

  • 学习:biopython的安装

    安装Numpy 因为使用biopython需要numpy的支持,所以需要先安装numpy。安装numpy过程如下:...

  • Numpy

    Numpy中文文档 # 基本语法 ``` import numpy myText = numpy.genfromt...

  • numpy运算

    numpy的与运算 numpy 中 argsort() numpy 中的布尔索引

网友评论

      本文标题:Numpy

      本文链接:https://www.haomeiwen.com/subject/sufnhktx.html