问题背景: numpy默认先行后列的方式输出, 我想要改为先列后行

方法:

1, 交换数组的维度 transpose swapaxes 错误!

2, reshape函数,并指定参数order='F'来进行列优先的排序 正确


原理:

T 二维数组转置 等同于transpose 

将4*2的数组转化为2*4


transpose 轴对换 高维数组转置 交换数组的维度 整个轴进行对换

https://cloud.tencent.com/developer/article/2094257


swapaxes 指定两轴对换

https://cloud.tencent.com/developer/article/2094257


transpose可以一次搞三个,但是swapaxes只能两两置换

https://zhuanlan.zhihu.com/p/93772156


代码:

方法1 错误!

ca = np.array( object=(.5, .4, .1, 0, .3, .2, .4, .2) ).reshape( (4, 2) ) result = np.array( object=(.5, .3, .4, .2, .1, .4, 0, .2) ).reshape( (4, 2) ) 请将ca 转化 为 result

要将ca转换为result,您可以使用np.transpose()函数来交换数组的维度。在这种情况下,您可以使用以下代码进行转换:

import numpy as np

ca = np.array(
    object=(.5, .4, .1, 0, .3, .2, .4, .2)
).reshape(
    (4, 2)
)

result = np.transpose(ca)

print(result)



方法2 正确

ca = np.array( object=(.5, .4, .1, 0, .3, .2, .4, .2) )

result = np.array( object=( (.5, .3), (.4, .2), (.1, .4), (0, .2) ) )

请将ca按照先列后行的顺序,转化为4行2列的array, 即转化为result

要按照先列后行的顺序将ca转换为4行2列的数组,你可以使用NumPy的reshape函数,并指定参数order='F'来进行列优先的排序。下面是正确的代码:

import numpy as np

ca = np.array((.5, .4, .1, 0, .3, .2, .4, .2))
result = ca.reshape(4, 2, order='F')

print(result)

输出结果为:

[[0.5 0.3]
 [0.4 0.2]
 [0.1 0.4]
 [0.  0.2]]

现在,ca已经按照先列后行的顺序转换为了4行2列的数组result,与你所期望的结果一致。