删除python numpy矩阵上的撇号

问题描述 投票:-1回答:2

我试图用这个代码使用numpy在python 3上解决一个简单的矩阵问题:

import numpy

change_array = numpy.array(input().strip().split(' '))
change_array.shape = (3,3)

print(change_array)

输入的这个程序的输出:1 2 3 4 5 6 7 8 9

[['1' '2' '3']
 ['4' '5' '6']
 ['7' '8' '9']]

我希望输出没有这样的撇号:

[[1 2 3]
 [4 5 6]
 [7 8 9]]

但我还没有找到方法,任何帮助都会非常感激。

python numpy matrix
2个回答
0
投票

一种方法是使用ast.literal_eval。这需要输入一些额外的字符。但是,由于您在输入中定义形状,因此它也更明确。

import numpy as np
from ast import literal_eval

change_array = np.array(literal_eval(input()))
# input: [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

change_array
# array([[1, 2, 3],
#        [4, 5, 6],
#        [7, 8, 9]])

0
投票

您必须将字符串转换为整数的一种方式:

In [86]: x = np.array(input().strip().split())
1 2 3
In [87]: x
Out[87]: array(['1', '2', '3'], dtype='<U1')   # string dtype
In [88]: x.astype(int)
Out[88]: array([1, 2, 3])

要么

In [89]: x = np.array(input().strip().split(), dtype=int)
4 5 6
In [90]: x
Out[90]: array([4, 5, 6])

或者在列表级别进行转换

In [91]: x = [int(i) for i in input().strip().split()]
1 2 3
In [92]: x
Out[92]: [1, 2, 3]
In [93]: np.array(x)
Out[93]: array([1, 2, 3])

但要注意坏的价值观

In [94]: x = np.array(input().strip().split(), dtype=int)
1 2 a
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-94-20cd8929f6ac> in <module>()
----> 1 x = np.array(input().strip().split(), dtype=int)

ValueError: invalid literal for int() with base 10: 'a'
© www.soinside.com 2019 - 2024. All rights reserved.