如何将ndarray转换为scipy中的矩阵?

Abe*_*Abe 1 python arrays numpy matrix

如何将ndarray转换为numpy中的矩阵?我正在尝试从csv导入数据并将其转换为矩阵.

from numpy import array, matrix, recfromcsv
my_vars = ['docid','coderid','answer1','answer2']
toy_data = matrix( array( recfromcsv('toy_data.csv', names=True)[my_vars] ) )
print toy_data
print toy_data.shape
Run Code Online (Sandbox Code Playgroud)

但我明白了:

[[(1, 1, 3, 3) (1, 2, 4, 1) (1, 3, 7, 2) (2, 1, 3, 3) (2, 2, 4, 4)
  (2, 4, 3, 1) (3, 1, 3, 3) (3, 2, 4, 3) (3, 3, 3, 4) (4, 4, 5, 1)
  (4, 5, 6, 2) (4, 2, 4, 3) (5, 2, 5, 4) (5, 3, 3, 1) (5, 4, 7, 2)
  (6, 1, 3, 3) (6, 5, 4, 1) (6, 2, 5, 2)]]
(1, 18)
Run Code Online (Sandbox Code Playgroud)

我需要做些什么才能从这段代码中获得4乘18的矩阵?对这个问题必须有一个简单的答案,但我找不到它.

unu*_*tbu 5

如果最终目标是制作矩阵,则无需使用命名列创建重新排列.您可以使用np.loadtxt将csv加载到ndarray中,然后用np.asmatrix它将其转换为矩阵:

import numpy as np
toy_data = np.asmatrix(np.loadtxt('toy_data.csv',delimiter=','skiprows=1))
print toy_data
print toy_data.shape
Run Code Online (Sandbox Code Playgroud)

产量

[[ 1.  1.  3.  3.]
 [ 1.  2.  4.  1.]
 [ 1.  3.  7.  2.]
 [ 2.  1.  3.  3.]
 [ 2.  2.  4.  4.]
 [ 2.  4.  3.  1.]
 [ 3.  1.  3.  3.]
 [ 3.  2.  4.  3.]
 [ 3.  3.  3.  4.]
 [ 4.  4.  5.  1.]
 [ 4.  5.  6.  2.]
 [ 4.  2.  4.  3.]
 [ 5.  2.  5.  4.]
 [ 5.  3.  3.  1.]
 [ 5.  4.  7.  2.]
 [ 6.  1.  3.  3.]
 [ 6.  5.  4.  1.]
 [ 6.  2.  5.  2.]]
(18, 4)
Run Code Online (Sandbox Code Playgroud)

注意:skiprows参数用于跳过csv中的标题.