从数组向函数中输入多个值,但仅针对单个参数

2024-10-02 14:21:35 发布

您现在位置:Python中文网/ 问答频道 /正文

这是一个新手的问题,我肯定已经在某个地方得到了回答,但不幸的是,我在任何地方都找不到它

我有一个函数findDX,它接受一个Nx2numpy数组D和一个单浮点X(定义如下)。我想在一个固定的D上计算这个函数,它有多个值X, i、 e.find_DX(D, 1)find_DX(D, 2)find_DX(D, 3)其中X输入的数组是[1,2,3]

是否有一种方法可以在保持D固定的同时传递X的多个值(除了更改函数定义)?我试过了

find_DX([mcm],[1,2,3])

但可以预见的是,这会产生一个ValueError: operands could not be broadcast together with shapes

def find_DX(D, X):
    """
    Parameters
    ----------
    D : numpy array
        Input cumulative DVH.
    X : Float
       We're finding the dose recieved by at least X% of tissues.

    Returns
    -------
    DX

    """
    idx = (np.abs(D[:,1] - X)).argmin()
    return D[idx,0]

编辑:我刚刚为它写了一个循环。我本想避免这样做,但它确实起了作用。如果有人想使用我的新功能,我已经在下面发布了我的新功能:

def find_DX(cDVH, X_values):
    """
    Parameters
    ----------
    cDVH : numpy array
        Input array
    X : numpy array
       Values of X to evaluate.

    """
    X_values=np.float64(X_values) #force to float
    Out=np.zeros_like(X_values)
    for i in range(0,len(X_values)):
        idx = np.abs(cDVH[:,1] - X_values[i]).argmin()
        Out[i]=cDVH[idx,0]

    return tuple(Out)

Tags: 函数numpy定义def地方np数组find
1条回答
网友
1楼 · 发布于 2024-10-02 14:21:35

你可以试试这个

import numpy as np

def find_DX(D, X):
    """
    Parameters
         
    D : numpy array
        Input cumulative DVH.
    X : Float
       We're finding the dose recieved by at least X% of tissues.

    Returns
       -
    DX

    """
    tmpArr=[]
    for i in X:
        idx = (np.abs(D[:,1] - i)).argmin()
        tmpArr.append(idx)
    return tmpArr

a = [[1,2],[2,3]]   #sample array
a= np.array(a)

print(find_DX(a,[1,2,3]))

相关问题 更多 >