view函数使用

view函数使用

  • numpy
    • view()
    • view(np.byte)
  • torch
    • view(a,b,c,-1,d,e,f)
  • instance
  • 第一次发博客,其余杂项
    • plt库的使用
    • plt.imshow()无法显示:
    • terminal 清屏
    • 快速判断数组维度
      • 参数个数
      • 参数
    • 条件输出
    • 类的引用
    • 结构体数组
    • 宏定义循环

numpy

numpy的view只能无参数或者单参数是数据类型

view()

没有任何作用。array to array

view(np.byte)

每个数后补7个0

torch

view(a,b,c,-1,d,e,f)

instance

代码片.

A = np.random.randint(0,10,(2,3,2,3,2))
import torch
B = torch.Tensor(A)
print(A.shape[4])
C = A.view()
D = A.view(np.byte)
B = B.view(-1, 1, 6)
print(A, B, C, D)

results

A是2*3*2*3*2的array
B是12*1*6的tensor,经过了多参数view
C与A形式相同
D形式如下:
 array([[[[[3, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0],
          [9, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0],
          [2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]],

第一次发博客,其余杂项

plt库的使用

import matplotlib as mpl
mpl.use('Agg')
import matplotlib.pyplot as plt

plt.imshow()无法显示:

方法一:plt.savefig("./picFaster.jpg")保存后打开
方法二:plt.show()显示

terminal 清屏

在terminal输入

python
import os
os.system("clear")

快速判断数组维度

(array([[[[[3, 6],
          [9, 7],
          [2, 0]],

         [[2, 7],
          [3, 5],
          [2, 5]]],


        [[[9, 4],
          [8, 6],
          [5, 1]],

         [[8, 0],
          [9, 9],
          [1, 2]]],


        [[[8, 0],
          [7, 4],
          [2, 9]],

         [[4, 7],
          [9, 2],
          [2, 1]]]],



       [[[[4, 3],
          [6, 3],
          [8, 1]],

         [[5, 1],
          [8, 8],
          [9, 2]]],


        [[[9, 9],
          [7, 7],
          [1, 7]],

         [[2, 9],
          [4, 5],
          [1, 8]]],


        [[[8, 1],
          [1, 1],
          [4, 4]],

         [[2, 4],
          [4, 8],
          [3, 0]]]]])

参数个数

array([[[[[3,
五个左方括号,五个参数

参数

从后往前确定每个参数
[3, 6]一个方括号组表示最后一维是2
[[3, 6],[9, 7],[2, 0]]两个方括号组表示倒数第二维是3
[[[3, 6],[9, 7], [2, 0]],
 [[2, 7], [3, 5], [2, 5]]],三个方括号组表示倒数第三维是2
A,B,C = np.random.randint(0,5,3)
D = np.random.randint(0,10,(A,B,C))
print(A,B,C,D)
(2, 0, 1, array([], shape=(2, 0, 1), dtype=int64))
(2, 4, 3, array([[[1, 1, 4],
        [4, 0, 9],
        [8, 8, 0],
        [1, 9, 3]],

       [[5, 2, 5],
        [3, 2, 4],
        [4, 6, 0],
        [3, 1, 0]]]))
[[[173 183 190 ... 186 186 185]
  [177 180 186 ... 186 185 186]
  [177 178 187 ... 187 185 185]
  ...
  [129 152 156 ... 147 125 103]
  [173 175 175 ... 127 114 112]
  [162 190 167 ...  93 100  98]]

 [[149 160 167 ... 172 172 171]
  [153 156 162 ... 172 171 171]
  [153 154 163 ... 173 170 172]
  ...
  [124 147 150 ... 142 118  96]
  [167 169 171 ... 122 109 106]
  [156 186 163 ...  88  94  92]]

 [[123 129 134 ... 159 159 158]
  [127 126 129 ... 159 158 159]
  [127 124 130 ... 160 157 158]
  ...
  [124 147 150 ... 148 126 104]
  [167 169 170 ... 129 116 116]
  [156 185 162 ...  96 104 102]]]
  3个左方括号表示3维,第一个右方括号表示最后一个参数是384,
  到第一个双右括号时有512个单右括号,倒数第二维512,
  共3个右双括号,所以3*512*384
[[[123 149 173]
  [129 160 183]
  [134 167 190]
  ...
  [159 172 186]
  [159 172 186]
  [158 171 185]]

 [[127 153 177]
  [126 156 180]
  [129 162 186]
  ...
  [159 172 186]
  [158 171 185]
  [159 171 186]]

 [[127 153 177]
  [124 154 178]
  [130 163 187]
  ...
  [160 173 187]
  [157 170 185]
  [158 172 185]]

 ...

 [[124 124 129]
  [147 147 152]
  [150 150 156]
  ...
  [148 142 147]
  [126 118 125]
  [104  96 103]]

 [[167 167 173]
  [169 169 175]
  [170 171 175]
  ...
  [129 122 127]
  [116 109 114]
  [116 106 112]]

 [[156 156 162]
  [185 186 190]
  [162 163 167]
  ...
  [ 96  88  93]
  [104  94 100]
  [102  92  98]]]
  3维,最后一维是3,第一个双括号内384个单括号,三括号内512个双括号,
  所以512*384*3

条件输出

用(?:)三元运算符,以及_("")包装字符串来实现条件输出C++代码块如下:

fprintf (stderr, raw_color ? _("Building histograms...\n") :
	_("Converting to %s colorspace...\n"), name[output_color-1]);

类的引用

  const char *dark_frame=0, *write_ext;
if (write_fun == &CLASS jpeg_thumb)
      write_ext = ".jpg";
    else if (output_tiff && write_fun == &CLASS write_ppm_tiff)
      write_ext = ".tiff";
    else
      write_ext = ".pgm\0.ppm\0.ppm\0.pam" + colors*5-5;

注释:
write_ext = ".pgm\0.ppm\0.ppm\0.pam" + colors*5-5
表示在pgm和ppm和pam中选择一个
colors=1,则write_ext = .pgm\0
colors=2,则write_ext = .ppm\0
colors=3,则write_ext = .pam\0
+ colors*5-5表示指针的移位

结构体数组

  static const struct {
    ushort id;
    char model[20];
  } unique[] = {
    { 0x168, "EOS 10D" },    { 0x001, "EOS-1D" },
    { 0x346, "EOS 100D" },
  }

每个结构体{}之后,包括最后一个结构体之后,都有,逗号

宏定义循环

#define FORC(cnt) for (c=0; c < cnt; c++)
#define FORC3 FORC(3)
#define FORC4 FORC(4)
#define FORCC FORC(colors)
	   FORCC ppm [col*colors+c] = curve[image[soff][c]] >> 8;

你可能感兴趣的:(view函数使用)