python - numpy 数组末尾的索引

标签 python arrays numpy

我有一个函数可以将一些数据加载到二维 numpy 数组中。我想让函数调用指定一些可以从开头和结尾删除的行和列。如果不指定参数,则返回所有数据。

import numpy as np
function load_data(min_row, max_row, min_col, max_col):
    a = np.loadtxt('/path/to/mydata.txt')[min_row:max_row,min_col:max_col]

现在,min_rowmin_col 可以默认为 0。如何设置 max_colmax_row 的默认值以引用数组的末尾?

我唯一的解决办法是:

function load_data(min_row=0, max_row=None, min_col=0, max_col=None):
    a = np.loadtxt('/path/to/mydata.txt')
    if not max_row: max_row = a.shape[0]
    if not max_col: max_col = a.shape[1]
    a = a[min_row:max_row,min_col:max_col]

有没有更好的解决方案,比如:

function load_data(min_row=0, max_row="end", min_col=0, max_col="end"):
    a = np.loadtxt('/path/to/mydata.txt')[min_row:max_row,min_col:max_col]

为了记录,示例数据可以是:

np.array([[1, 2, 3, 4, 5],
          [1, 2, 3, 4, 5],
          [1, 2, 3, 4, 5],
          [1, 2, 3, 4, 5],
          [1, 2, 3, 4, 5]])

最佳答案

你可以直接在切片中使用None,例如,

x = np.arange(10)
x[2:None]    # array([5, 6, 7, 8, 9])

或者你可以这样写你的函数:

function load_data(min_row=0, max_row=None, min_col=0, max_col=None):
    a = np.loadtxt('/path/to/mydata.txt')
    a = a[min_row:max_row,min_col:max_col]

在这里,您也可以将最小默认值替换为 None。这是有效的,因为 None 被用作 slice object 中的默认值。 .有关在 numpy 切片中使用 None 的更明确的文档,请参阅 Basic Slicing docs description 末尾的注释框.

关于python - numpy 数组末尾的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26658866/

相关文章:

python - pytest:指定pytest.ini位置的环境变量

javascript - 使用嵌套函数查找第二大数字。查找最大数的函数会覆盖原始数组

PHP - 帮助我从我的数据库中的这个序列化值数组中获取值

c++ - 在指定位置插入字符

python - 给定 x,y 平面中的 MxN 网格,计算 f(x,y) 并将其存储到矩阵中(python)

python - 集合类的 __eq__ 方法的一个很好的例子是什么?

python - upload_blob函数中的Azure python asyncio内存耗尽

python - 加快矩阵中每个 x,y 点的角度计算

python - 跨模块共享单例

arrays - numpy 数组的最大大小是多少?