首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何创建一个输出具有预定义大小的数组的函数?

如何创建一个输出具有预定义大小的数组的函数?
EN

Stack Overflow用户
提问于 2019-07-16 02:44:53
回答 1查看 38关注 0票数 0

我想做一个输出预定义大小数组的函数。该函数依赖于变量xyrxryd。变量xy与笛卡尔数值直接相关。rxry是从函数生成的blobs的半径。

我已经将数组独立从传统的左上角的0, 0转换到最中间的像素。这个数组在长度和宽度的herms中应该总是奇数。

下面的blob一次给我一个数组。我需要一堆可以相加的数组。当我更改xy时,数组的大小也会改变,但我需要数组保持相同的大小或在边界上归零。

我有一些如下的代码:

代码语言:javascript
复制
def equation(x, y):
    return 1 * np.exp(-(x**2 + y**2))


def make_matrix(xs, ys, x_min=nxs, y_min=nys): #makes cartesian values
    out = [] #outputs array
    for i in range(x_min, xs - center_x):
        row = []
        for j in range(y_min, ys - center_y):
            row.append(equation(i, j))
        out.append(row)
    return out

blob = np.asarray(list(np.float_(make_matrix(x, y))))
EN

回答 1

Stack Overflow用户

发布于 2019-07-16 02:59:16

矢量化是你的朋友。当您的函数可以针对整个数组进行逐个元素计算时,不需要逐个元素地计算列表。

代码语言:javascript
复制
def make_matrix(xs, ys, x_min=nxs, y_min=nys):
    x = np.arange(x_min, xs - center_x).reshape(1, -1)
    y = np.arange(y_min, ys - center_y).reshape(-1, 1)
    out = np.exp(-(x**2 + y**2))
    return out

reshape操作为x创建了一个1xN行向量,为y创建了一个Nx1列向量。这些形状确保add (+)操作中的broadcastingx**2 + y**2扩展为所需的最终大小的数组。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57045523

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档