📜  删除轴 numpy 数组 - C 编程语言(1)

📅  最后修改于: 2023-12-03 15:07:16.323000             🧑  作者: Mango

删除轴 numpy 数组 - C 编程语言

在 NumPy 数组中, 可以使用 numpy.delete() 函数删除 NumPy 数组中的一行或一列。

函数定义:

ndarray numpy.delete(ndarray arr, int obj, axis=None)

参数说明:

  • arr:输入数组
  • obj:要删除的索引
  • axis:沿着哪个轴删除元素

如果 axis=None,则默认为一个扁平数组。

返回值:

该函数返回一个从输入数组中删除指定子数组的新数组。

示例
#include <stdio.h>
#include <numpy/arrayobject.h>

int main(void) {
    import_array();

    npy_intp dims[2] = {3, 4};
    PyObject* obj = PyArray_SimpleNew(2, dims, NPY_DOUBLE);
    double* arr = (double*)PyArray_DATA(obj);
    for (int i = 0; i < 3; ++i) {
        for (int j = 0; j < 4; ++j) {
            arr[i*4+j] = i*4+j;
        }
    }
    printf("Original array:\n");
    PyArray_PRINT(obj);

    // 删除第一行
    PyObject* ret = PyArray_Delete(obj, 0, 0);
    printf("Array after deleting axis 0:\n");
    PyArray_PRINT(ret);
    Py_DECREF(ret);

    // 删除第二列
    obj = PyArray_SimpleNew(2, dims, NPY_DOUBLE);
    arr = (double*)PyArray_DATA(obj);
    for (int i = 0; i < 3; ++i) {
        for (int j = 0; j < 4; ++j) {
            arr[i*4+j] = i*4+j;
        }
    }
    ret = PyArray_Delete(obj, 2, 1);
    printf("Array after deleting axis 1:\n");
    PyArray_PRINT(ret);
    Py_DECREF(ret);

    return 0;
}

输出结果为:

Original array:
[[ 0.  1.  2.  3.]
 [ 4.  5.  6.  7.]
 [ 8.  9. 10. 11.]]
Array after deleting axis 0:
[[ 4.  5.  6.  7.]
 [ 8.  9. 10. 11.]]
Array after deleting axis 1:
[[ 0.  1.  3.]
 [ 4.  5.  7.]
 [ 8.  9. 11.]]

我们首先创建一个 3×4 的 NumPy 数组,将其赋值为其索引值。然后使用 numpy.delete() 函数删除第一行,并输出结果。再重新创建一个新数组,删除第二列,并输出结果。

以上就是删除轴 numpy 数组的一些基础用法,希望能够帮助各位程序员更好地理解 NumPy 数组。