Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/362.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 如何从函数中获取矩阵输出?_Python_Numpy - Fatal编程技术网

Python 如何从函数中获取矩阵输出?

Python 如何从函数中获取矩阵输出?,python,numpy,Python,Numpy,我一直在想如何使用这个函数,但似乎无法让x输入做任何事情。每当我为x输入数值时,它都会告诉我,由于“大小”问题,它无法工作 我该怎么办 import numpy as np from scipy.sparse import diags, kron, identity from scipy.sparse.linalg import inv import matplotlib.pyplot as plt def laplacian_1D(x): """Construct the 1D La

我一直在想如何使用这个函数,但似乎无法让
x
输入做任何事情。每当我为
x
输入数值时,它都会告诉我,由于“大小”问题,它无法工作

我该怎么办

import numpy as np
from scipy.sparse import diags, kron, identity
from scipy.sparse.linalg import inv
import matplotlib.pyplot as plt

def laplacian_1D(x):
    """Construct the 1D Laplacian matrix on the domain defined by x. Note that
    we assume a constant spacing.

    Parameters
    ----------
    x : array-like, shape (nx, )
        One dimensional mesh.

    Returns
    -------
    A : scipy sparse matrix, shape (nx, nx)
        Laplacian matrix.

    """

    # -->
    n = x.size
    # -->
    dx = x[1]-x[0]

    # -->
    d2 = [np.ones(n-1), -2*np.ones(n), np.ones(n-1)]

    # -->
    A = diags(d2, [-1, 0, 1]) / dx**2

    return A


print(laplacian_1D(10))
错误为

回溯(最近一次呼叫最后一次):
文件“C:/Users/Andrew/PycharmProjects/ENSAM/Math/Exercise_1.py”,第52行,在
印刷品(拉普拉斯1D(10))
文件“C:/Users/Andrew/PycharmProjects/ENSAM/Math/Exercise_1.py”,第23行,拉普拉斯式1D
n=x.size
AttributeError:“int”对象没有属性“size”

如参数说明中所述,函数希望获得一个numpy数组或一个列表作为参数。例如,调用
laplacian_1D(x=np.arange(10))
将返回形状为(10,10)的拉普拉斯矩阵。请注意,函数中使用x的唯一方法是确定输出矩阵的大小和dx值。后者告诉您x应该是一个元素值递增的列表。

欢迎使用StackOverflow。请按照您创建此帐户时的建议,阅读并遵循帮助文档中的发布指南。适用于这里。在您发布MCVE代码并准确指定问题之前,我们无法有效地帮助您。我们应该能够将您发布的代码粘贴到文本文件中,并重现您指定的问题。。这通常意味着,你需要的是与当地导师一起度过的时间,或是浏览教程,而不是堆栈溢出。最重要的是,每个教程都会教你一系列相关的技术,而不仅仅是解决眼前的问题。最值得注意的是,函数文档清楚地指定了所需的输入形状。使用“数字值”调用它是无效的输入。我添加了一个错误,即我有@PruneYou需要输入1d numpy数组,而不是整数。这是我第一次学习如何使用这样的函数,因此我感谢您的帮助。我知道这个问题有点愚蠢。非常感谢。为函数调用中类似的参数赋值,即
x=np.arange(10)
,是无效的Python语法。我不同意你的观点。它可能不符合某些样式规范,但运行可靠。因此,在我看来,这是有效的。第二,对于具有许多参数的函数,采用这种方式非常有用。我还认为,这是最好的教育方式,让提问者了解正在发生的事情。也许您在引用函数定义中的默认值,而这些值本身并不应该是函数?