Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/338.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.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
cvxopt.matrix和numpy.array之间的Python 3转换_Python_Numpy_Python 3.x - Fatal编程技术网

cvxopt.matrix和numpy.array之间的Python 3转换

cvxopt.matrix和numpy.array之间的Python 3转换,python,numpy,python-3.x,Python,Numpy,Python 3.x,python:python3.2 cvxopt:1.1.5 numpy:1.6.1 我读 我得到 Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: non-numeric element in list 检查我在cvxopt讨论论坛()上贴的补丁dense.c。用这个重新编译,您将能够将np数组转换为密集矩阵。我假设对稀疏矩阵进行同样的编辑是必要的,但由于我

python:python3.2 cvxopt:1.1.5 numpy:1.6.1

我读

我得到

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: non-numeric element in list

检查我在cvxopt讨论论坛()上贴的补丁dense.c。用这个重新编译,您将能够将np数组转换为密集矩阵。我假设对稀疏矩阵进行同样的编辑是必要的,但由于我不需要它们,我将把它留给开发人员。

虽然它不是固定的,但这是一个简单的解决方法

cvxopt.matrix(nparray)

相反的方向更难。如果需要int数组

np.vectorize(lambda x: int.from_bytes(x, 'big'))(np.array(cvxoptmat).T)
对于双阵列:

import struct
np.vectorize(lambda x: struct.unpack('d', x))(np.array(cvxoptmat).T)

截至
cvxopt==1.1.9
numpy==1.13.1

import cvxopt
import numpy as np

a = cvxopt.matrix(np.array([[7, 8, 9], [10, 11, 12]]))
print(a)
产生输出

[  7   8   9]
[ 10  11  12]
a
是一个

<2x3 matrix, tc='i'>


结果矩阵具有整数类型(),因为起始
numpy
数组包含整数。以
double
开头会导致
'd'
类型。

我认为这是一个bug。您的代码在Python2.7中运行良好(如您提到的教程中所述)。我建议您向cvxopt讨论论坛()提问。您可以尝试在调用
numpy.array
时强制使用
dtype=float
。@PierreGM刚刚尝试过。不起作用:-(.修补的稠密.c仅在从numpy.array转换为cvxopt.matrix时起作用,而不是相反。
import cvxopt
import numpy as np

a = cvxopt.matrix(np.array([[7, 8, 9], [10, 11, 12]]))
print(a)
[  7   8   9]
[ 10  11  12]
<2x3 matrix, tc='i'>