numpy转置及轴对换transpose函数简单例子理解
数组转置和轴对换
1、利用数组中的T属性进行转置
arr = np.arange(15).reshape((3,5))
arr
array([[ 0, 1, 2, 3, 4],
[ 5, 6, 7, 8, 9],
[10, 11, 12, 13, 14]])
arr.T
array([[ 0, 5, 10],
[ 1, 6, 11],
[ 2, 7, 12],
[ 3, 8, 13],
[ 4, 9, 14]])
2、transpose,应用于高维数组
arr = np.arange(12).reshape((2,2,3))
arr
array([[[ 0, 1, 2],
[ 3, 4, 5]],
[[ 6, 7, 8],
[ 9, 10, 11]]])
arr.transpose((1,0,2))
array([[[ 0, 1, 2],
[ 6, 7, 8]],
[[ 3, 4, 5],
[ 9, 10, 11]]])</code></pre><br>
transpose(a, axes=None)
Permute the dimensions of an array.
先看0轴,即从上往下看,有两个数组
[0, 1, 2,
3, 4, 5]
[6, 7, 8,
9, 10, 11]
再看1轴,也为两个数组
[0, 1, 2,
6, 7, 8]
[3, 4, 5,
9, 10, 11]
2轴四个数组:
[0, 3,
6, 9] 后三类推
此时我们在回到transpose的axes参数,我们用的是(1, 0, 2),也就是说,我们将轴的顺序重新排列,即将这里的1轴与0轴调换得到一个新的2×2×4的数组。
array([[[ 0, 1, 2], [ 6, 7, 8]],
[[ 3, 4, 5], [ 9, 10, 11]]])</code></pre>
另外对于索引的变化也与transpose的重新排列顺序一致
3、swapaxesfang方法
In [86]: arr = np.arange(12).reshape(2,2,3)
In [87]: arr
Out[87]:
array([[[ 0, 1, 2],
[ 3, 4, 5]],
[[ 6, 7, 8],
[ 9, 10, 11]]])
In [88]: arr.swapaxes(1,0)
Out[89]:
array([[[ 0, 1, 2],
[ 6, 7, 8]],
[[ 3, 4, 5],
[ 9, 10, 11]]])
知道了transpose函数后swapaxes方法也就容易理解,这里参数1,0即对应了transpose中的(1,0),也同样将0轴和1轴进行对换得到新的数组。
这里也有自己理解时看的一些其他人的解答,大家也可以看看帮助理解:
<script>
(function(){
function setArticleH(btnReadmore,posi){
var winH = $(window).height();
var articleBox = $("div.article_content");
var artH = articleBox.height();
if(artH > winH*posi){
articleBox.css({
'height':winH*posi+'px',
'overflow':'hidden'
})
btnReadmore.click(function(){
articleBox.removeAttr("style");
$(this).parent().remove();
})
}else{
btnReadmore.parent().remove();
}
}
var btnReadmore = $("#btn-readmore");
if(btnReadmore.length>0){
if(currentUserName){
setArticleH(btnReadmore,3);
}else{
setArticleH(btnReadmore,1.2);
}
}
})()
</script>
</article>