numpy配列から文字列のリストを作成する(非ループソリューション)

mptevsion

numpy配列の2つの列を使用した文字列である新しいリストをまとめたいと思います。ただし、各要素をループせずにこれを機能させることはできないようです。

import numpy as np
test_list = np.tile(np.array([[1,2],[3,4],[5,6]]),(100000,1))
print(test_list[:,0])
print(test_list[:,1])

def dumbstring(points):
    # Loop through and append a list
    string_pnts = []
    for x in points:
        string_pnts.append("X co-ordinate is %g and y is %g" % (x[0], x[1]))
    return string_pnts

def dumbstring2(points):
    # Prefill a list
    string_pnts = [""] * len(points)
    i = 0
    for x in points:
        string_pnts[i] = ("X co-ordinate is %g and y is %g" % (x[0], x[1]))
        i += 1
    return string_pnts

def numpystring(points):
    return ("X co-ordinate is %g and y is %g" % (points[:,0], points[:,1]))    

def numpystring2(point_x, point_y):
    return ("X co-ordinate is %g and y is %g" % (point_x, point_y))

最初の2つの作業(事前入力は追加よりも速いと思いましたが、同じように見えます):

%timeit tdumbstring = dumbstring(test_list) # 239ms
%timeit tdumbstring2 = dumbstring2(test_list) # 239ms

しかし、最後はそうではありません-では、この関数をベクトル化する方法はないのでしょうか?

tnumpystring = numpystring(test_list) # Error
tnumpystring2 = numpystring2(test_list[:,0],test_list[:,1]) # Error

編集:

実際にはNumpyは必要ないので、Pandasを試しましたが、少し遅かったです。

import pandas as pd
df = pd.DataFrame(test_list)
df.columns = ['x','y']
% time pdtest = ("X co-ordinate is " + df.x.map(str) + " and y is " + df.y.map(str)).tolist()
print(test[:5])

私もマッピングを試みましたが、それはnpをループするよりも遅かったです:

def mappy(pt_x,pt_y):
    return("X co-ordinate is %g and y is %g" % (pt_x, pt_y))
%time mtest1 = list(map(lambda x: mappy(x[0],x[1]),test_list))
print(mtest1[:5])

タイミング:

ここに画像の説明を入力してください

ケビン

を使用した解決策numpy.core.defchararray.addは次のとおりstrです。最初にタイプをに設定します

from numpy.core.defchararray import add    
test_list = np.tile(np.array([[1,2],[3,4],[5,6]]),(100000,1)).astype(str)

def stringy_arr(points):
    return add(add('X coordinate is ', points[:,0]),add(' and y coordinate is ', points[:,1]))

わずかに速いタイミング:

%timeit stringy_arr(test_list)
1 loops, best of 3: 216 ms per loop

array(['X coordinate is 1 and y coordinate is 2',
       'X coordinate is 3 and y coordinate is 4',
       'X coordinate is 5 and y coordinate is 6', ...,
       'X coordinate is 1 and y coordinate is 2',
       'X coordinate is 3 and y coordinate is 4',
       'X coordinate is 5 and y coordinate is 6'], 
      dtype='|S85')

# Previously tried functions
%time dumbstring(test_list)
1 loops, best of 3: 340 ms per loop

%timeit tdumbstring2 = dumbstring2(test_list)
1 loops, best of 3: 320 ms per loop

%time mtest1 = list(map(lambda x: mappy(x[0],x[1]),test_list))
1 loops, best of 3: 340 ms per loop

編集

また、最初に提案したソリューションよりもはるかに高速な、純粋なPythonを理解して使用することもできます。

test_list = np.tile(np.array([[1,2],[3,4],[5,6]]),(10000000,1)).astype(str)  #10M
test_list = test_list.tolist()

def comp(points):
    return ['X coordinate is %s Y coordinate is %s' % (x,y) for x,y in points]

%timeit comp(test_list)
1 loops, best of 3: 6.53 s per loop

['X coordinate is 1 Y coordinate is 2',
 'X coordinate is 3 Y coordinate is 4',
 'X coordinate is 5 Y coordinate is 6',
 'X coordinate is 1 Y coordinate is 2',
 'X coordinate is 3 Y coordinate is 4',
 'X coordinate is 5 Y coordinate is 6',...

%timeit dumbstring(test_list)
1 loops, best of 3: 30.7 s per loop

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

セル内データ検証リストから空白以外の空の文字列を除外する非マクロソリューション

分類Dev

プロパティのコンマsepリストから配列を作成するためのよりエレガントなソリューション?

分類Dev

別のアプリケーションから文字列配列を取得する

分類Dev

いくつかの型文字列から整数のリストを出力するための最適なソリューション

分類Dev

線形リンクリストの配列を表示する再帰的ソリューション

分類Dev

C#コンソールアプリケーションで各配列のスレッドを使用して整数配列のリストを要約する

分類Dev

配列から選択オプション値リストを作成する

分類Dev

配列から深さが不明なオブジェクトを作成するための一般的なソリューション

分類Dev

オーバーシュートでnumpy配列を0から1にスケーリングする方法は?

分類Dev

グーグルシートの列でオプションリストを動的に更新するソリューション

分類Dev

関数から値を返し、その値を使用して数式を作成し、ソリューション(キー/値)をオブジェクトの配列にプッシュする方法は?

分類Dev

オブジェクトの配列でグループ化する動的ソリューション

分類Dev

配列とリストからパンダシリーズを作成する

分類Dev

GraphQLに(配列)フィールドのリストを挿入するためのミューテーションクエリを作成する方法

分類Dev

Rの文字列から「c(」と「)」を削除します-エレガントなソリューション?

分類Dev

配列からアルファベット順のナビゲーションリストを印刷する

分類Dev

文字列配列リソースから文字列配列を初期化する

分類Dev

コードからソリューション内のプロジェクトのリストを取得する

分類Dev

xml文字列リソースでAndroidアプリからメールを送信するためのリンク

分類Dev

tag-itのコントローラーからタグの配列を取得するためのより良いソリューション

分類Dev

配列をソートするためのJavaScriptソリューションの意味を理解する

分類Dev

3プロジェクトソリューションのどこに接続文字列を配置しますか?

分類Dev

JavaScript 配列のリストからマッチ キューを作成する

分類Dev

Clojureで文字列を整数のベクトルに変換するための関数ソリューション

分類Dev

配列をループして一致を見つけ、考えられるすべてのソリューションを返します

分類Dev

Python:部分文字列がリストにあるかどうかをチェックするためのエレガントなソリューション?

分類Dev

numpy配列のリストからnumpy配列を作成するPython的な方法

分類Dev

リレーションを維持しながら、リストからの値を含む numpy 配列を設定する

分類Dev

numpyベクトル化のアプリケーションによる条件付きチェックを使用してPythonリストまたはnumpy配列から値を抽出する方法は?

Related 関連記事

  1. 1

    セル内データ検証リストから空白以外の空の文字列を除外する非マクロソリューション

  2. 2

    プロパティのコンマsepリストから配列を作成するためのよりエレガントなソリューション?

  3. 3

    別のアプリケーションから文字列配列を取得する

  4. 4

    いくつかの型文字列から整数のリストを出力するための最適なソリューション

  5. 5

    線形リンクリストの配列を表示する再帰的ソリューション

  6. 6

    C#コンソールアプリケーションで各配列のスレッドを使用して整数配列のリストを要約する

  7. 7

    配列から選択オプション値リストを作成する

  8. 8

    配列から深さが不明なオブジェクトを作成するための一般的なソリューション

  9. 9

    オーバーシュートでnumpy配列を0から1にスケーリングする方法は?

  10. 10

    グーグルシートの列でオプションリストを動的に更新するソリューション

  11. 11

    関数から値を返し、その値を使用して数式を作成し、ソリューション(キー/値)をオブジェクトの配列にプッシュする方法は?

  12. 12

    オブジェクトの配列でグループ化する動的ソリューション

  13. 13

    配列とリストからパンダシリーズを作成する

  14. 14

    GraphQLに(配列)フィールドのリストを挿入するためのミューテーションクエリを作成する方法

  15. 15

    Rの文字列から「c(」と「)」を削除します-エレガントなソリューション?

  16. 16

    配列からアルファベット順のナビゲーションリストを印刷する

  17. 17

    文字列配列リソースから文字列配列を初期化する

  18. 18

    コードからソリューション内のプロジェクトのリストを取得する

  19. 19

    xml文字列リソースでAndroidアプリからメールを送信するためのリンク

  20. 20

    tag-itのコントローラーからタグの配列を取得するためのより良いソリューション

  21. 21

    配列をソートするためのJavaScriptソリューションの意味を理解する

  22. 22

    3プロジェクトソリューションのどこに接続文字列を配置しますか?

  23. 23

    JavaScript 配列のリストからマッチ キューを作成する

  24. 24

    Clojureで文字列を整数のベクトルに変換するための関数ソリューション

  25. 25

    配列をループして一致を見つけ、考えられるすべてのソリューションを返します

  26. 26

    Python:部分文字列がリストにあるかどうかをチェックするためのエレガントなソリューション?

  27. 27

    numpy配列のリストからnumpy配列を作成するPython的な方法

  28. 28

    リレーションを維持しながら、リストからの値を含む numpy 配列を設定する

  29. 29

    numpyベクトル化のアプリケーションによる条件付きチェックを使用してPythonリストまたはnumpy配列から値を抽出する方法は?

ホットタグ

アーカイブ