【发布时间】:2019-04-22 18:42:17
【问题描述】:
我正在尝试编写一个函数,该函数获取一个 numpy 数组 INPUT,并将其列一一传递给另一个函数。 INPUT 数组是 1D 或 2D(不是更多) 第二个函数需要一维数组作为参数。 (len(param.shape)==1)
我读过一个类似的线程,其中 OP 想要对所有列求和并检查其他条件...... 这个,可能需要另一个答案。
所需的伪代码操作:
def func(INPUT,a,b,...)
for column in INPUT: #whether be a 1D or 2D
result = another_func(column,...)
试过这个: 问题是如何不检查 func 内 INPUT 数组的维度:
if(len(INPUT.shape)==1):
another_func(INPUT,....)
elif(len(INPUT.shape)==2):
for c in range(INPUT.shape[1]):
another_func(INPUT[:,c])
【问题讨论】:
-
for column in INPUT.T: ...可能对你有用。转置在 1d 情况下什么都不做;在 2d 中,它将列尺寸放在首位。或者for j in range(INPUT.shape[-1]): column=INPUT[...,J],..按最后一个索引进行迭代。 -
在您的
INPUT.ndim==2情况下,enumerat(INPUT)迭代行,c是行数,而不是列数。对数组进行迭代会在第一个维度上进行迭代,就像对列表的嵌套列表一样。 -
对不起,这是一个错字,我复制了代码,并在此处对其进行了编辑,并将其编辑到 range(),就像我尝试过的代码一样
-
那么如果是1d,不用迭代就用?在这种情况下,您的功能看起来不错。检查尺寸没有错;
numpy函数一直都是这样做的。查看np.atleast_2d之类的函数。您可以强制 1d 成为 1 行 2d 然后循环!
标签: python numpy numpy-ndarray