Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在numpy数组列上迭代的循环(维度为1D或2D)_Python_Numpy_Numpy Ndarray - Fatal编程技术网

Python 在numpy数组列上迭代的循环(维度为1D或2D)

Python 在numpy数组列上迭代的循环(维度为1D或2D),python,numpy,numpy-ndarray,Python,Numpy,Numpy Ndarray,我正在尝试编写一个函数,它获取numpy数组、输入,并将其列逐个传递给另一个函数。 输入数组是1D或2D(不是更多) 第二个函数期望1D数组作为参数。(长度(参数形状)==1) 我读过一篇类似的文章,OP希望对所有列求和并检查其他条件。。。 这可能需要另一个答案 伪代码中所需的操作: def func(INPUT,a,b,...) for column in INPUT: #whether be a 1D or 2D result = another_func(colum

我正在尝试编写一个函数,它获取numpy数组、输入,并将其列逐个传递给另一个函数。 输入数组是1D或2D(不是更多) 第二个函数期望1D数组作为参数。(长度(参数形状)==1)

我读过一篇类似的文章,OP希望对所有列求和并检查其他条件。。。 这可能需要另一个答案

伪代码中所需的操作:

def func(INPUT,a,b,...)
    for column in INPUT: #whether be a 1D or 2D
        result = another_func(column,...)
我试过这个: 问题是如何在func中不检查输入数组的维度:

if(len(INPUT.shape)==1):
    another_func(INPUT,....)
elif(len(INPUT.shape)==2):
    for c in range(INPUT.shape[1]):
        another_func(INPUT[:,c])

其思想是:在1d输入的情况下,转换为1列2d数组,然后作为2d输入处理

def func(INPUT, a, b):
    return np.apply_along_axis(
        lambda col: another_func(col, a, b),  # function to apply
        1,  # axis along which to apply; 1 = columns
        np.reshape(np.atleast_2d(H2), (len(H), -1))  # transform 1D->2D, if necessary
    )

INPUT.T:…中的列的
可能适合您。在1d情况下,转置不起任何作用;在二维视图中,它将列标注放在第一位。或者
对于范围内的j(INPUT.shape[-1]):column=INPUT[…,j],…
按最后一个索引进行迭代。在
INPUT.ndim==2
情况下,
enumerat(INPUT)
对行进行迭代,其中
c
是行计数,而不是列计数。在数组上迭代会在第一个维度上迭代,就像在嵌套列表上迭代一样。对不起,这是一个输入错误,我复制了代码,并在这里进行了编辑,将其编辑到range(),就像在我尝试过的代码中一样。因此,如果它是1d,请在不进行迭代的情况下使用它?在这种情况下,您的函数看起来很好。检查尺寸没有问题
numpy
函数一直都是这样做的。查看类似于
np.至少\u 2d
的函数。您可以强制1d为1行2d,然后循环!这会将另一个函数应用于列的所有元素,对吗?如果是这样,它对我没有帮助,因为另一个函数需要额外的参数。(我试图通过…in result=另一个_func(列,…)部分来显示这一点)。但非常感谢您的回答。我更新了答案,展示了如何传递额外的参数