python - 为什么 NumPy 中的轴参数会改变?

标签 python arrays numpy

当涉及到 NumPy 轴参数的逻辑时,我很困惑。在某些情况下,当轴 = 0 时它会影响行,而在某些情况下当轴 = 0 时它会影响列。示例:

a = np.array([[1,3,6,7,4],[3,2,5,9,1]])
array([[1,3,6,7,4],
       [3,2,5,9,1]])

np.sort(a, axis = 0)   #This sorts the columns
array([[1, 2, 5, 7, 1],  
       [3, 3, 6, 9, 4]])

np.sort(a, axis=1)     #This sorts the rows           
array([[1, 3, 4, 6, 7],
       [1, 2, 3, 5, 9]])

#####################################################################
arr = np.array([[1,2,3,4], [5,6,7,8], [9,10,11,12]])
arr
array([[ 1,  2,  3,  4],
       [ 5,  6,  7,  8],
       [ 9, 10, 11, 12]])

np.delete(arr,obj = 1, axis = 0)        # This deletes the row
array([[ 1,  2,  3,  4],
       [ 9, 10, 11, 12]])

np.delete(arr,obj = 1, axis = 1)        #This deletes the column
array([[ 1,  3,  4],
       [ 5,  7,  8],
       [ 9, 11, 12]])

如果这里有我缺少的逻辑,我很乐意学习它。

最佳答案

将它记为 0=down 和 1=across 可能是最简单的。

这意味着: enter image description here 使用 axis=0 将方法应用到每一列或行标签(索引)。 使用 axis=1 将方法应用于每一行或列标签。 这是一张图片,显示了每个轴所指的 DataFrame 部分:

记住 Pandas 遵循 NumPy 对轴这个词的使用也很有用。 NumPy 的术语表中解释了用法:

轴是为多于一维的数组定义的。二维数组有两个对应的轴:第一个垂直向下跨行(轴 0),第二个水平跨列(轴 1)。 [我的重点]

因此,关于问题中的方法 np.sort(axis=1),似乎已正确定义。它采用水平跨列的条目的平均值,即沿每个单独的行。另一方面,np.sort(axis=0) 将是一个跨行垂直向下的操作。

同样,np.delete(name, axis=1) 指的是对列标签的操作,因为它们直观地穿过水平轴。指定 axis=0 将使该方法改为作用于行。

关于python - 为什么 NumPy 中的轴参数会改变?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67200368/

相关文章:

python - PuLP 生成可通过命令行 CBC 求解的 LP 文件,但 PuLP 报告未定义的解决方案

java - 将 CSV 导入 Jpanel 上的 JTable(无 CSVReader)

python - cv2.imshow() 给出黑屏

python - set issubset 性能差异取决于参数类型

python - 如何在 R 中重新获取 Python 变量?

java - 添加稍后在 arraylist 或 array 中使用循环初始化的变量

python - numpy `arange` 超过最终值

python - 矩形阵列中距离的最快计算

python - 如何将 django call_command 的输出保存到变量或文件中

Php按键排序多维数组