📅  最后修改于: 2023-12-03 15:07:16.323000             🧑  作者: Mango
在 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 数组。