zoukankan      html  css  js  c++  java
  • 创建ndarray的方法

    1.array

    array将输入数据(列表、元组、数组或其他序列类型)转换为ndarray。要么推断出dtype,要么显式指定dtype。默认直接复制输入数据。 
    不显式说明时,array会尝试为新建的这个数组推断出一个较为合适的数据类型。数据类型保存在一个dtype对象中。

     1 data1 = [1,2,2.2,3,0,4]
     2 arr1 = np.array(data1)
     3 print(arr1)
     4 print(arr1.dtype)
     5 print(arr1.ndim)
     6 print(arr1.shape)
     7 
     8 data2 = [[1,2,3,4],[5,6,7,8]]
     9 arr2 = np.array(data2)
    10 print(arr2)
    11 print(arr2.dtype)
    12 print(arr2.ndim)
    13 print(arr2.shape)

    上面代码运行结果为:

    1 [ 1.   2.   2.2  3.   0.   4. ]
    2 float64
    3 1
    4 (6,)
    5 [[1 2 3 4]
    6  [5 6 7 8]]
    7 int32
    8 2
    9 (2, 4)

    2.asarray

    nsarray将输入转换为ndarray,如果输入本身就是一个ndarray就不进行复制。 
    源码在Libsite-packages umpycore umeric.py第463行。 
    观察其源码:

    1 def asarray(a, dtype=None, order=None):
    2     return array(a, dtype, copy=False, order=order)

    可见asarray与array唯一的区别就是array会默认复制一份对象,而asarray不会(输入本身就是一个ndarray时)。例:

    1 >>> arr1 = np.array([1,2,3])
    2 >>> np.asarray(arr1) is arr1
    3 True
    4 >>> np.array(arr1) is arr1
    5 False

    3.arange

    arange类似于内置的range,但返回的是一个ndarray而不是列表。(Python内置函数range的数组版)

    1 >>> np.arange(10)
    2 array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

    4.zeros、zeros_like

    根据指定的形状和dtype创建一个全0数组。zeros_like以另一个数组为参数,并根据其形状和dtype创建一个全0数组。

    1 >>>np.zeros((2,5))
    2 array([[ 0.,  0.,  0.,  0.,  0.],
    3        [ 0.,  0.,  0.,  0.,  0.]])
    1 >>> arr1 = np.arange(10)
    2 >>> arr2 = np.zeros_like(arr1)
    3 >>> arr2
    4 array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0])

    5.ones、ones_like

    与zeros、zeros_like类似,只不过产生全1数组。

    6.empty、empty_like

    与zeros、zeros_like类似,不过只分配内存空间,不填充任何值(一些未初始化的垃圾值)。

    7.eye、identity

    identity可创建一个正方的N*N单位矩阵(对角线为1,其余为0)。

    1 >>> np.identity(5)
    2 array([[ 1.,  0.,  0.,  0.,  0.],
    3        [ 0.,  1.,  0.,  0.,  0.],
    4        [ 0.,  0.,  1.,  0.,  0.],
    5        [ 0.,  0.,  0.,  1.,  0.],
    6        [ 0.,  0.,  0.,  0.,  1.]])

    eye在单参时与identity功能相同:

    1 >>> np.eye(5)
    2 array([[ 1.,  0.,  0.,  0.,  0.],
    3        [ 0.,  1.,  0.,  0.,  0.],
    4        [ 0.,  0.,  1.,  0.,  0.],
    5        [ 0.,  0.,  0.,  1.,  0.],
    6        [ 0.,  0.,  0.,  0.,  1.]])

    除此之外,eye后面可加参数k,表示第几条对角线为全1,如:

    1 >>> np.eye(5,k=1)
    2 array([[ 0.,  1.,  0.,  0.,  0.],
    3        [ 0.,  0.,  1.,  0.,  0.],
    4        [ 0.,  0.,  0.,  1.,  0.],
    5        [ 0.,  0.,  0.,  0.,  1.],
    6        [ 0.,  0.,  0.,  0.,  0.]])
    1 >>> np.eye(5,k=-2)
    2 array([[ 0.,  0.,  0.,  0.,  0.],
    3        [ 0.,  0.,  0.,  0.,  0.],
    4        [ 1.,  0.,  0.,  0.,  0.],
    5        [ 0.,  1.,  0.,  0.,  0.],
    6        [ 0.,  0.,  1.,  0.,  0.]])

    eye还可以指定长宽(可理解为将单位矩阵截取一部分)。如:

    1 >>> np.eye(3,4)
    2 array([[ 1.,  0.,  0.,  0.],
    3        [ 0.,  1.,  0.,  0.],
    4        [ 0.,  0.,  1.,  0.]])

    事实上,通过查看源码(Libsite-packages umpycore umeric.py),可以很容易地看清各种函数之间的关系。


     

  • 相关阅读:
    【 DCOS 】织云 CMDB 管理引擎技术详解
    腾讯云无服务器云函数架构精解
    深度学习在 CTR 中应用
    一文教你迅速解决分布式事务 XA 一致性问题
    小程序开发工具全新上线
    秦俊:开放 DevOps 敏捷开发套件,助力开发者驰骋云端
    张兴华:云端架构助力企业快速成长
    王磊:AI 时代物流行业的 OCR 应用
    陈杰:无服务器架构,让云端开发更纯粹
    腾讯织云:DevOps 流水线应用平台践行之路
  • 原文地址:https://www.cnblogs.com/zhouyifeng/p/7748061.html
Copyright © 2011-2022 走看看