-3

文字列のリストを数値のリストに変換する方法を知りたいです。

ユーザーが次のようにxとyの値を入力するためのphpフォームがあります。

X: [1,3,4]
Y: [2,4,5]

これらの値は、varcharsとしてデータベースに保存されます。そこから、これらは数値(numpy)配列として使用することになっているPythonプログラムによって呼び出されます。ただし、これらはプレーン文字列と呼ばれるため、計算を実行することはできません。処理する前にそれらを数値配列に変換する方法はありますか、それとも何か間違っているものがありますか?

4

4 に答える 4

2

strip()およびsplit()関数とともにリスト内包表記を使用して、これを数値に変換できます。

x = '[1,3,4]'
new_x = [int(i) for i in x.strip('[]').split(',')]
new_x
[1, 3, 4]

必要に応じて、このリストを使用intしてください。たとえば、numpyなどに渡します。

from numpy import array

a = array(new_x)
a
array([1, 3, 4])

a * 4
array([ 4, 12, 16])
于 2012-06-11T16:37:14.020 に答える
1

これが1つの方法です:

>>> import numpy
>>> block = "[1,3,4]"
>>> block = block.strip("[]")
>>> a = numpy.fromstring(block, sep=",", dtype=int)
>>> a
array([1, 3, 4])
>>> a*2
array([2, 6, 8])
于 2012-06-11T16:43:27.337 に答える
0
import ast
import numpy as np

def parse_array(s):
    return np.array(ast.literal_eval(s))

s = '[1,2,3]'
data = parse_array(s)    # -> numpy.array([1,2,3])
于 2012-06-11T16:48:40.997 に答える
0

私があなたの質問を正しく理解していれば、あなたはあなたの目的を達成するためにeval()そしてcompile()組み込み関数を使うことができます:

>>> lst_str = '[1,2,3]'
>>> lst_obj = compile(lst_str, '<string>', 'eval')
>>> eval(lst_obj)
[1, 2, 3]

eval()ただし、入力を検証できない限り、この方法で使用することは潜在的に危険であることに注意してください。

于 2012-06-11T16:49:14.897 に答える