我有一个NumPy数组,如下所示:
>>> import numpy
>>> foo = numpy.array(
[[ 1. , 0.3491, 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. ,
1. , 0.1648, 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. ,
1. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. ,
1. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. ,
1. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. ],
[ 0.4269, 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. ,
0.225 , 0.1637, 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. ,
0.4269, 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. ,
0.2929, 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. ,
0.4078, 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. ],
[ 0.4212, 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. ,
0.1719, 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. ,
0.3856, 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. ,
0.147 , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. ,
0.2459, 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. ],
[ 0.3581, 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. ,
0.1676, 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. ,
0.2545, 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. ,
0.0619, 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. ,
0.2195, 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. ],
[ 0.3558, 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. ,
0.1658, 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. ,
0.2544, 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. ,
0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. ,
0.2159, 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. ]])
我想对其重新编制索引和形状,使其成为以下内容:
>>> bar
array(
[[ 1. , 1. , 1. , 1. , 1. ],
[ 0.4269, 0.225 , 0.4269, 0.2929, 0.4078],
[ 0.4212, 0.1719, 0.3856, 0.147 , 0.2459],
[ 0.3581, 0.1676, 0.2545, 0.0619, 0.2195],
[ 0.3558, 0.1658, 0.2544, 0. , 0.2159],
[ 0.3491, 0.1648, 0. , 0. , 0. ],
[ 0. , 0.1637, 0. , 0. , 0. ]])
有没有一种不使用for循环的有效方法?也许用broadcasting or strides?你知道吗
您可以reshape按Fortran顺序(或使用换位的组合)对数组执行操作,然后slice对数组执行操作以仅提取前7行:
这里选择的新形状是基于数组中这些形状的位置。当您按Fortran顺序展平数组,然后看到您的模式出现时,这一点就变得很清楚了。你知道吗
首先,创建numpy数组:
然后,用:
b = arr[:,0:50:10]
然后,堆叠要保留的其他数据:
用更多的切片去掉最后一行。你知道吗
相关问题 更多 >
编程相关推荐