zoukankan      html  css  js  c++  java
  • numpy.ravel()/numpy.flatten()/numpy.squeeze()

    numpy.ravel(a, order='C')

      Return a flattened array

    numpy.chararray.flatten(order='C')

      Return a copy of the array collapsed into one dimension

    numpy.squeeze(a, axis=None)

      Remove single-dimensional entries from the shape of an array.

    相同点: 将多维数组 降为 一维数组

    不同点:

      ravel() 返回的是视图(view),意味着改变元素的值会影响原始数组元素的值;

      flatten() 返回的是拷贝,意味着改变元素的值不会影响原始数组;

      squeeze()返回的是视图(view),仅仅是将shape中dimension为1的维度去掉;

    ravel()示例:

     1 import matplotlib.pyplot as plt
     2 import numpy as np
     3 
     4 def log_type(name,arr):
     5     print("数组{}的大小:{}".format(name,arr.size))
     6     print("数组{}的维度:{}".format(name,arr.shape))
     7     print("数组{}的维度:{}".format(name,arr.ndim))
     8     print("数组{}元素的数据类型:{}".format(name,arr.dtype))
     9     #print("数组:{}".format(arr.data))
    10     
    11 a = np.floor(10*np.random.random((3,4)))
    12 print(a)
    13 log_type('a',a)
    14 
    15 a1 = a.ravel()
    16 print("a1:{}".format(a1))
    17 log_type('a1',a1)
    18 a1[2] = 100
    19 
    20 print(a)
    21 log_type('a',a)

    flatten()示例

     1 import matplotlib.pyplot as plt
     2 import numpy as np
     3 
     4 def log_type(name,arr):
     5     print("数组{}的大小:{}".format(name,arr.size))
     6     print("数组{}的维度:{}".format(name,arr.shape))
     7     print("数组{}的维度:{}".format(name,arr.ndim))
     8     print("数组{}元素的数据类型:{}".format(name,arr.dtype))
     9     #print("数组:{}".format(arr.data))
    10     
    11 a = np.floor(10*np.random.random((3,4)))
    12 print(a)
    13 log_type('a',a)
    14 
    15 a1 = a.flatten()
    16 print("修改前a1:{}".format(a1))
    17 log_type('a1',a1)
    18 a1[2] = 100
    19 print("修改后a1:{}".format(a1))
    20 
    21 print("a:{}".format(a))
    22 log_type('a',a)

    squeeze()示例:

    1. 没有single-dimensional entries的情况

     1 import matplotlib.pyplot as plt
     2 import numpy as np
     3 
     4 def log_type(name,arr):
     5     print("数组{}的大小:{}".format(name,arr.size))
     6     print("数组{}的维度:{}".format(name,arr.shape))
     7     print("数组{}的维度:{}".format(name,arr.ndim))
     8     print("数组{}元素的数据类型:{}".format(name,arr.dtype))
     9     #print("数组:{}".format(arr.data))
    10     
    11 a = np.floor(10*np.random.random((3,4)))
    12 print(a)
    13 log_type('a',a)
    14 
    15 a1 = a.squeeze()
    16 print("修改前a1:{}".format(a1))
    17 log_type('a1',a1)
    18 a1[2] = 100
    19 print("修改后a1:{}".format(a1))
    20 
    21 print("a:{}".format(a))
    22 log_type('a',a)

    从结果中可以看到,当没有single-dimensional entries时,squeeze()返回额数组对象是一个view,而不是copy。

    2. 有single-dimentional entries 的情况

     1 import matplotlib.pyplot as plt
     2 import numpy as np
     3 
     4 def log_type(name,arr):
     5     print("数组{}的大小:{}".format(name,arr.size))
     6     print("数组{}的维度:{}".format(name,arr.shape))
     7     print("数组{}的维度:{}".format(name,arr.ndim))
     8     print("数组{}元素的数据类型:{}".format(name,arr.dtype))
     9     #print("数组:{}".format(arr.data))
    10 
    11 a = np.floor(10*np.random.random((1,3,4)))
    12 print(a)
    13 log_type('a',a)
    14 
    15 a1 = a.squeeze()
    16 print("修改前a1:{}".format(a1))
    17 log_type('a1',a1)
    18 a1[2] = 100
    19 print("修改后a1:{}".format(a1))
    20 
    21 print("a:{}".format(a))
    22 log_type('a',a)

  • 相关阅读:
    无法与服务器建立安全链接
    OpenGL基础探究
    百度语音识别接入遇到的问题
    语音音频相关
    Gif动态图UIImage
    替换图像的某种色值
    错误
    各种须知分类等
    动画支持的一些keypath
    X pgAdmin4 重置布局 页面关不掉,要疯掉了
  • 原文地址:https://www.cnblogs.com/black-mamba/p/9183704.html
Copyright © 2011-2022 走看看