删除python numpy矩阵上的撇号

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了删除python numpy矩阵上的撇号相关的知识,希望对你有一定的参考价值。

我试图用这个代码使用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]]

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

答案

一种方法是使用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]])
另一答案

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

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'

以上是关于删除python numpy矩阵上的撇号的主要内容,如果未能解决你的问题,请参考以下文章

前面没有\的撇号

XPath 查询中的撇号 (')

Discord:命令参数中的撇号在 C# 中不起作用

将 ' 转换为 PHP 中的撇号

忽略正则表达式中的撇号[重复]

jsStringFormat() 和带有 JSON 的撇号