python - 在Python中构建由替代对象组成的矩阵

标签 python arrays matrix numpy

我对 python 相当陌生,目前正在使用 numPy 库和 pyinterval 库。我想构建一个不是由 float 组成的矩阵,而是由间隔组成的矩阵。

但是如果我执行以下操作:

A = [[interval([2,3]), interval([0,1]), interval([1,2]), interval([2,3])]]
m = np.matrix(A,interval)

它给出以下错误:

raise ValueError, "matrix must be 2-dimensional"

为了了解它是如何做到的,我查看了以下内容:

np.array(A)

并得到以下输出:

array([[[[ 2.,  3.]],
    [[ 0.,  1.]],
    [[ 1.,  2.]],
    [[ 2.,  3.]]]])

当我想看到类似的东西时:

array([[interval(2,3), interval[0,1],
       [interval(1,2), interval[2,3]])

我不确定如何让它理解我正在使用的类型,在进行一些搜索后我尝试了各种方法,但似乎没有任何效果。

如何才能将一个区间视为数组/矩阵中的一个元素?

谢谢,

最佳答案

来自the docs regarding dtype syntax :

each type specifier can be prefixed with a repetition number, or a shape. In these cases an array element is created, i.e., an array within a record. That array is still referred to as a single field.

因此,要将其指定为数组中的一项,您可以尝试将 dtype 设置为 '(2,)object':

制作 2x2 ndarray:

import interval
A = [(interval.interval([2,3]), interval.interval([0,1])),
     (interval.interval([1,2]), interval.interval([2,3]))]
a = np.array(A,dtype='(2,)object')

制作 2x2 矩阵:

m=np.matrix(A,dtype='(2,)object')

警告:我不太了解 dtype 语法。它太复杂了,有时我会看到与使用外来数据类型相关的奇怪错误报告( #1955#1760#1580 )。我个人的结论是,坚持使用简单的数据类型更安全。或者,如果您需要使用更复杂的数据类型,请对其进行单元测试以确保其行为符合您的预期。


定义数组的更简单、更好的方法是:

A = [(interval.interval([2,3]), interval.interval([0,1])),
     (interval.interval([1,2]), interval.interval([2,3]))]
a = np.empty((2,2),dtype='object')
a[:]=A

这会明确告诉 numpy 你想要什么形状的数组,然后,由于数据类型是 object,你可以将任何你喜欢的东西填充到数组的单元格中。

此外,与上面的 dtype='(2,)object' 解决方案不同,它也适用于一维数组:

bd = [interval.interval([0,1]),
      interval.interval([6,7])]

b = np.empty(2,dtype='object')
b[:]=bd

关于python - 在Python中构建由替代对象组成的矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8275746/

相关文章:

r - 用另一个矩阵中的值替换一个矩阵中的值

python - 如何使用 Python 将 URL 查询字符串转换为元组列表?

python - PIL : Convert Bytearray to Image

java - Canvas 位图到字节数组并读回麻烦

matlab - 更好的(非线性)分箱

algorithm - 找到矩阵乘积中的单个错误元素?

python - 在python中添加到空双向链表

python - django项目的urls.py和views.py之间的联系

Python:从堆中删除元素

arrays - 将 Postgres 行导出为 JSON 文件