Python 在numpy数组列上迭代的循环(维度为1D或2D)
我正在尝试编写一个函数,它获取numpy数组、输入,并将其列逐个传递给另一个函数。 输入数组是1D或2D(不是更多) 第二个函数期望1D数组作为参数。(长度(参数形状)==1) 我读过一篇类似的文章,OP希望对所有列求和并检查其他条件。。。 这可能需要另一个答案 伪代码中所需的操作: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
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(列,…)部分来显示这一点)。但非常感谢您的回答。我更新了答案,展示了如何传递额外的参数