numpy的view只能无参数或者单参数是数据类型
没有任何作用。array to array
每个数后补7个0
代码片
.
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]],
import matplotlib as mpl
mpl.use('Agg')
import matplotlib.pyplot as plt
方法一:plt.savefig("./picFaster.jpg")保存后打开
方法二:plt.show()显示
在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;