[解決済み] 異種混在のnumpy配列への追加時に `TypeError: invalid type promotion` が発生する。
質問
で配列を作成しました。
Ticket_data = np.empty((0,7),
dtype='str,datetime64[m],datetime64[m],str,str,str,str')
とデータを追記しようとしています。
lineitem = [str(data[0][0]), OpenDT, CloseDT, str(data[0][11]),
str(data[0][12]), str(data[0][13]), str(data[0][14])]
ここで
OpenDT
と
CloseDT
で作成されました。
np.datetime64(DTstring, 'm')
エラーが発生するのですが。
Traceback (most recent call last):
File "Daily Report.py", line 25, in <module>
np.append(Ticket_data, np.array([lineitem]), axis=0)
File "C:\Python27\lib\site-packages\numpy\lib\function_base.py", line 3884, in append
return concatenate((arr, values), axis=axis)
TypeError: invalid type promotion
編集する
print np.array([lineitem])
出力
[['21539' '2015-06-30T10:46-0700' '2015-06-30T10:55-0700' 'Testtext'
'Testtext2' 'Testtext3' 'Testtext5']]
そして
print np.array([lineitem], dtype=Ticket_data.dtype)
出力内容
[[('', 245672259890L, datetime.datetime(1970, 1, 1, 0, 0), '', '', '', '')
('', datetime.datetime(2015, 6, 30, 17, 46), datetime.datetime(1970, 1, 1, 0, 0), '', '', '', '')
('', datetime.datetime(2015, 6, 30, 17, 55), datetime.datetime(1970, 1, 1, 0, 0), '', '', '', '')
('', 7741528753124368710L, datetime.datetime(1982, 11, 21, 6, 33), '', '', '', '')
('', 7959953343691844691L, datetime.datetime(1970, 1, 1, 0, 0), '', '', '', '')
('', datetime.datetime(5205, 7, 21, 7, 42), datetime.datetime(1970, 1, 1, 0, 0), '', '', '', '')
('', 2336635297857499728L, 2338042681633169744L, '', '', '', '')]]
これを解決するにはどうしたらいいのでしょうか?
どのように解決するのですか?
まず最初に。
フィールド
とは異なります。
次元
を通常のndarrayで使用します。そのため
Ticket_label
配列は
1次元
しかし、その次元の各行要素には
7フィールド
, 例:
Ticket_data = np.empty((0,),
dtype='str,datetime64[m],datetime64[m],str,str,str,str')
を連結するために
lineitem
から
Ticket_data
の場合、まずネストされたリストから配列に暗黙のうちにキャストする必要があります。を別々に指定しないので
dtype
を各フィールドに割り当てた場合、numpyでは
lineitem
を同種の配列とみなして、共通の
dtype
に安全に昇格させることができる。
例えば
lineitem = ['foo', np.datetime64('1979-03-22T19:00', 'm'),
np.datetime64('1979-03-22T19:00', 'm'), 'bar', 'baz', 'a', 'b']
np.array(lineitem)
# array(['21539', '2015-06-30T10:46-0700', '2015-06-30T10:55-0700',
# 'Testtext', 'Testtext2', 'Testtext3', 'Testtext5'],
# dtype='|S21')
この例では、すべての要素が21文字の文字列にキャストされています。この例では
dtype
の配列と一致しません。
Ticket_data
をキャストする安全な方法はありません。
'|S21'
を
'np.datetime64[m]'
を取得します。
invalid type promotion
のエラーが発生します。
を明示的にキャストすることで、エラーを回避することができます。
lineitem
を配列に変換し、各フィールドに正しい dtypes を指定します。
np.array([tuple(lineitem)], dtype=Ticket_data.dtype)
をキャストしていることに注意してください。
lineitem
の要素をタプルに変換するために必要です。
lineitem
として解釈されます。
フィールド
ではなく、別々の
要素
. その結果、形状の配列である
(1,)
(ただし
(1, 7)
):
np.array([tuple(lineitem)], dtype=Ticket_data.dtype).shape
# (1,)
もし私が
しない
キャスト
lineitem
をタプルに変換すると
(1, 7)
配列で、各
個別
の要素は
lineitem
として解釈されます。
シーケンス
の
'str,datetime64[m],datetime64[m],str,str,str,str'
その結果、あなたの編集で示されたような無意味なことになってしまうのです。
この結果を連結して
Ticket_label
.
余談ですが、私が強くお勧めするのは パンダ このような異種データの処理には、構造化配列の代わりに
関連
-
[解決済み] NumPyの配列を切り詰めずに、完全に表示するにはどうしたらよいですか?
-
[解決済み] NumPyの配列で、N個の最大値のインデックスを得るには?
-
[解決済み] matplotlibのカラーバーのフォントサイズを変更する
-
[解決済み] 異種混在のnumpy配列への追加時に `TypeError: invalid type promotion` が発生する。
-
[解決済み] Pip install - Python 2.7 - Windows 7
-
[解決済み] NumPy の配列を csv ファイルにダンプする
-
[解決済み] NumPy多次元配列のi番目の列にアクセスする方法は?
-
[解決済み] numpy配列の中で最も近い値を検索する
-
[解決済み] Numpy配列の次元
-
[解決済み] 2D float numpy arrayを2D int numpy arrayに変換する方法は?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】PyCharmが "PEP8: expected 2 blank lines, found 1 "と表示される。
-
[解決済み] TypeError: softmax() が予期しないキーワード引数 'axis' を受け取りました。
-
[解決済み] Pythonです。AttributeError: 'NoneType' オブジェクトには 'startswith' 属性がありません。
-
[解決済み] PyCharmは "PEP8: expected 2 blank lines, found 1" と表示する。
-
[解決済み] 同じファイル名が既に存在する場合、移動して置き換えるか?
-
[解決済み] matplotlibのカラーバーのフォントサイズを変更する
-
[解決済み] トリプルクォートされた文字列リテラルのスキャン中に Python EOF が発生する
-
[解決済み] 異種混在のnumpy配列への追加時に `TypeError: invalid type promotion` が発生する。
-
[解決済み] PandasでSeriesのDataFrameから1列を表示/印刷する
-
[解決済み] Pip install - Python 2.7 - Windows 7