【发布时间】:2015-06-24 06:22:59
【问题描述】:
我正在尝试根据一系列值(y 轴与 x 轴)绘制我创建的函数。
我要计算的运算在“矩阵乘法”中很常见:
r^T * C * r
其中 r^T 的形状应为 (1,100),r 的形状应为 (100,1),而 C 是形状为 (100,100) 的矩阵(或 ndarray 形状 100,100)。使用numpy.dot() 相乘,输出应该是单个值。
该函数只有一个输入,可以是一组数据。
import numpy as np
# The user first sets the values used by the function
# Not "true code", because input() too complex for the question at hand
r = data # an numpy ndarray of 100 values, (100,)
original_matrix = M # set matrix, such that M.shape = (100, 100)
param = array of data # EITHER an array of values, shape (50,),
# OR one value, i.e. a 32/64-bit float
# e.g. parameters = np.array of 50 values
def function(param):
# using broadcasting, "np.sum(param * original_matrix for i in r)"
new_matrix = np.sum(param[:, None, None] * original_matrix, axis=0)
# now perform r^T * C * r
return np.dot( r.transpose(), np.dot( new_matrix, r) )
调用函数
function(param)
产生 一个 值,格式为 = numpy.float64。
我想根据一系列值绘制这个函数,即我需要这个函数来输入一个 np.array 并输出一个 np.cdarray,必须像 NumPy 中的其他 ufuncs。该函数将评估 ndarray 中的每个元素,并将其绘制为函数。
例如,
import pylab
X = np.arange(100)
Y = sin(X)
pylab.plot(X, Y)
输出
鉴于我的原始函数(仅是数组“参数”的函数)导致np.float64 格式,我如何将这个函数转换为ufunc?我想根据 x 轴上的参数在 y 轴上绘制我的函数。
【问题讨论】:
-
x 轴上的参数是什么意思?您是否有要迭代并查找 y 值的参数数组列表?
-
希望帖子现在更清楚了。该函数仅依赖于参数数组
param。 y 轴是这个函数,function(param),针对值数组“param”绘制。为了讨论,请param = np.arange(50)