python - NumPy 数组元素的自定义排列

标签 python arrays numpy transformation

我有一个 NumPy 数组“数据”,如下所示:

data = np.array([
[0.0, 30.0, 60.0, 90.0, 120.0, 150.0, -180.0, -150.0, -120.0, -90.0, -60.0, -30.0],
[0.0, 30.0, 60.0, 90.0, 120.0, 150.0, -180.0, -150.0, -120.0, -90.0, -60.0, -30.0],
[0.0, 30.0, 60.0, 90.0, 120.0, 150.0, -180.0, -150.0, -120.0, -90.0, -60.0, -30.0]])

我想从给定的数组“数据”生成数组“结果”。实际上,在所需的数组中,必须将零列放在中间,然后值向右方向增加,而值向左方向减少,如下所示:

result = np.array([
[-180.0, -150.0, -120.0, -90.0, -60.0, -30.0, 0.0, 30.0, 60.0, 90.0, 120.0, 150.0, 180.0],
[-180.0, -150.0, -120.0, -90.0, -60.0, -30.0, 0.0, 30.0, 60.0, 90.0, 120.0, 150.0, 180.0],
[-180.0, -150.0, -120.0, -90.0, -60.0, -30.0, 0.0, 30.0, 60.0, 90.0, 120.0, 150.0, 180.0]])

结果数组应该基于给定数组的索引操作。在 NumPy 中执行此操作的最佳方法是什么?

我尝试了np.rot90、np.flipud、np.fliprl函数,但没有成功。

但是,我不知道如何开始。

最佳答案

看看np.roll :

np.roll(data, shift=data.shape[1]//2, axis=1)

这里的 shift 表示要滚动数据的元素数量(正值向右,负值向左)。根据规范,我们希望将其沿第二个维度 (axis=1) 向右滚动数组长度的一半。 // 是整数除法,data.shape[1] 获取沿第二维度的维度大小(基于零索引)。

我认为您缺少 dataresult 中的 +180.0 值(即您的 result 有 13 列,但您的 data 只有 12 列)。

In [9]: data = np.array([
[0.0, 30.0, 60.0, 90.0, 120.0, 150.0, -180.0, -150.0, -120.0, -90.0, -60.0, -30.0],
[0.0, 30.0, 60.0, 90.0, 120.0, 150.0, -180.0, -150.0, -120.0, -90.0, -60.0, -30.0],
[0.0, 30.0, 60.0, 90.0, 120.0, 150.0, -180.0, -150.0, -120.0, -90.0, -60.0, -30.0]])

In [10]: result = np.roll(data, data.shape[1]//2, axis=1)

In [11]: result
Out[11]:
array([[-180., -150., -120.,  -90.,  -60.,  -30.,    0.,   30.,   60.,
          90.,  120.,  150.],
       [-180., -150., -120.,  -90.,  -60.,  -30.,    0.,   30.,   60.,
          90.,  120.,  150.],
       [-180., -150., -120.,  -90.,  -60.,  -30.,    0.,   30.,   60.,
          90.,  120.,  150.]])

这并不是真正基于索引的排序,但考虑到您尝试过的其他方法,我猜测这是您可能想要的类型操作。

关于python - NumPy 数组元素的自定义排列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25532558/

相关文章:

python - 按值比较数据帧

python - 如何让 iPython 在 Console2 上运行?

java - IntStream 对二维数组求和

javascript - 如何在 Angular js中相互绑定(bind)两个不同数组的值

java - 使用长度为零的数组

python - 普朗克定律,频率数字

python - 使用python将 Spring 物理学应用于四元数

python - numpy 中 str 类输入的默认 dtype 是什么?

python - 使用 JDBC、Python 和 JayDeBeApi 连接到 Filemaker 数据库

javascript - 使用ajax时Django不渲染数据