一.二维矩阵,如下:
a1
=
np.zeros((
3
,
4
))
# 创建3*4全零二维数组
输出:
array([[
0.
,
0.
,
0.
,
0.
],
[
0.
,
0.
,
0.
,
0.
],
[
0.
,
0.
,
0.
,
0.
]])
可以看出创建了一个3×4的矩阵,由于python与matlab都是行优先存储的,所以行也就是第一个维度3写在前面,第二个维度列4写在后面
二:三维矩阵:
a2
=
np.ones((
2
,
3
,
4
), dtype
=
np.int16)
# 创建2*3*4全1三维数组
a2
=
np.ones((
2
,
3
,
4
), dtype
=
'int16'
)
# 创建2*3*4全1三维数组
输出:
array([[[
1
,
1
,
1
,
1
],
[
1
,
1
,
1
,
1
],
[
1
,
1
,
1
,
1
]],
[[
1
,
1
,
1
,
1
],
[
1
,
1
,
1
,
1
],
[
1
,
1
,
1
,
1
]]], dtype
=
int16)
创建(2,3,4)维度的矩阵,行优先存储,其实就是一个立方体,2,3为一个平面,3,4为一个平面,2,4为一个平面,
虽然我平常用的方式是看第一个括号,我就把它定为第一维,这是一个正确的方法
但是,从数组输出直观上显示,好像第一维度是3,第一个平面是3,4。
其实这就是一个立方体,电脑上显示出来直观的不一定就是第一个维度的面,应该画一个立方体的图,就可以得知,哪个是第一维度的面。
二:关于三维数组平面:
比如脑部MRI图片,维度为(x,y,z)我们看到的水平面,也就是z轴上的平面,我们总会认为水平面就是第一个,和第二个维度(x,y),其实不对,应该是第2,个维度,(y,z)
如下图所示:
即水平吗维度是3,3的 012,345,678
所以,在我的脑部MRI图像切块的时候应该采取[;,;,z]才能够切到水平吗的块
然后存入lmdb的时候需要转制,因为caffe的数据结构是按照列优先存储的。
参考:https://www.cnblogs.com/xzcfightingup/p/7598293.html