【问题标题】:Sorting arrays in NumPy ascending from negative to positive axis在 NumPy 中从负轴到正轴对数组进行排序
【发布时间】:2020-08-30 13:28:17
【问题描述】:

我有以下代码,我在使用 numpy 数组时遇到了一些困难。

A= np.array(([[1, 2 ,25], [3, 4, 23], [2, 6,55], [9,7,78],[11,5,47]]),dtype='float')

u,udx = np.unique(A[:,0],return_index=True) # unique ascending frequencies from 1st column
A_sorted = A[udx,:] # adds sorted and unique 1st row into the array table

# fill the A-sorted with mag_lin and phase_rad in the 2nd adn 3rd column
A_sorted[:,1] = 10**(A_sorted[:,1]/10)  # Magnitude dB into linear

A_sorted[:,2] = np.pi/180 *A_sorted[:,2]

A_flip= np.flip(A_sorted,0) # flipping the arrays vertically;
A_flip[:,0]= -A_flip[:,0]
A_flip[:,2]= -A_flip[:,2]
H= np.concatenate(((A_flip,A_sorted)))

这个程序的输出是:

array([[-11.    ,   3.1623,  -0.8203],
       [ -9.    ,   5.0119,  -1.3614],
       [ -3.    ,   2.5119,  -0.4014],
       [ -2.    ,   3.9811,  -0.9599],
       [ -1.    ,   1.5849,  -0.4363],
       [ -1.    ,   1.5849,  -0.4363],
       [ -2.    ,   3.9811,  -0.9599],
       [ -3.    ,   2.5119,  -0.4014],
       [ -9.    ,   5.0119,  -1.3614],
       [-11.    ,   3.1623,  -0.8203]])

我更想要的是:

array([[-11.    ,   3.1623,  -0.8203],
       [ -9.    ,   5.0119,  -1.3614],
       [ -3.    ,   2.5119,  -0.4014],
       [ -2.    ,   3.9811,  -0.9599],
       [ -1.    ,   1.5849,  -0.4363],
       [  1.    ,   1.5849,   0.4363],
       [  2.    ,   3.9811,   0.9599],
       [  3.    ,   2.5119,   0.4014],
       [  9.    ,   5.0119,   1.3614],
       [ 11.    ,   3.1623,   0.8203]])

一边做一边做

A_flip[:,0]= -A_flip[:,0]
A_flip[:,2]= -A_flip[:,2]
    

A_sorted 的第一列和第三列也设置为负数,这是我不想要的。我正在尝试从 -x 绘制到 +x 轴。您有解决此问题的方法吗?

感谢任何帮助。

非常感谢。

【问题讨论】:

    标签: python arrays numpy


    【解决方案1】:

    问题与使用 = 分配时如何复制 numpy 数组有关。 A_flip 和 A_sorted 实际上是指同一个对象,所以当你否定它时,它适用于两个变量(同一个对象)。解决方案是使用 .copy() 方法创建一个新对象。所以替换

    A_flip = np.flip(A_sorted,0)

    A_flip = np.flip(A_sorted,0).copy()

    【讨论】:

    • 嘿凯尔,非常感谢你,你是救世主。是的,不知何故,我知道它们都被视为同一个对象,只是不知道如何解决它。现在很清楚了。
    最近更新 更多