访问 numpy.ndarray 字段的内容

如何解决访问 numpy.ndarray 字段的内容

我从 python 中的 sympy lambdify 函数创建了一个 ndarray,我需要的实际值隐藏在我的结果变量的这个数组字段中。需要明确的是,array 沿 axis=0 的每个索引对应于特定时刻的 7 阶时间多项式的一阶导数:

enter image description here

在我的 lambdify 函数中,我传递了一个大小为 33 的元素时间向量,并期望得到一个 8x33 或 33x8 的结果,但结果却将我的输出推送到了这个数组字段,我无法访问它。现在,我只能通过执行 result[0]result[1] 等来访问它,但这很乏味,因为我一次只能访问所有内容,这意味着循环是访问所有内容的唯一方法.这不是我期望 ndarray 的行为:

enter image description here

有人能解释一下这里发生了什么吗,如果可能的话,我如何访问这个数组字段,以便我可以对任何后续操作进行矢量化?我的目标是沿轴 = 0 堆叠数组中的每个元素并计算后续导数并根据它们各自的时间堆叠它们。

解决方法

doc 函数的 lambdified 显示了实际的 numpy 代码。有时看看它会有所帮助。

破译您的 png 需要一些时间(我们通常不喜欢 SO 上的那些)。我猜这是 pydev 数组的 result 显示。它看起来像一个形状 (8,) 对象数据类型数组。大部分元素是形状(33,)数组,但最后2个是标量。

np.stack(result[:6])

应该产生一个 (8,33) 数字 dtype 数组。

对象 dtype 数组很像一个列表,引用不同的元素。

看看你的多项式,我猜lambdified函数返回类似:

np.array([7*t**6,...,2*t,1,0])

虽然其中 6 个术语包含 t,但最后 2 个不包含。包含 t 的项将产生一个 (33,) 数组。 sympy.lambdify 是一个相对简单的函数,执行从 sympynumpy 的词法翻译。它对 numpy 没有“深刻”的理解。


示例:

In [25]: exp = (3*t**3,2*t**2,1*t,1.0,0)
In [26]: f = lambdify(t,exp)
In [27]: print(f.__doc__)
Created with lambdify. Signature:

func(t)

Expression:

(3*t**3,t,0)

Source code:

def _lambdifygenerated(t):
    return ((3*t**3,0))

In [28]: f(np.arange(3))
Out[28]: (array([ 0,3,24]),array([0,2,8]),2]),0)
In [29]: np.array(_)
<ipython-input-29-7a2cd91c32ca>:1: VisibleDeprecationWarning: Creating an ndarray from ragged nested sequences (which is a list-or-tuple of lists-or-tuples-or ndarrays with different lengths or shapes) is deprecated. If you meant to do this,you must specify 'dtype=object' when creating the ndarray.
  np.array(_)
Out[29]: 
array([array([ 0,0],dtype=object)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?