pythonのdatetimeオブジェクトには、aware:タイムゾーンあり、native:タイムゾーンなしの概念があります。
参考サイト:datetime の UTC / JSTの変換についてまとめ | Python Snippets
一方、np.datetime64にはタイムゾーンがありません。
np.datetime64のタイムゾーンを変更する場合は型を変更する必要があります。
np.datetime64をdatetime.datetimeに変更するには、下サイトのとおり結構手間がかかります。
参考サイト:numpy.datetime64をPythonのdatetime.datetime型にキャストする - Qiita
pandasを使うと比較的簡単にできるので、その方法を記載しておきます。
参考サイト:pandasの時系列データのタイムゾーンを処理(tz_convert, tz_localize) | note.nkmk.me
サンプルデータ
time #array(['2019-10-11T00:00:00.000000000', '2019-10-11T00:30:00.000000000', # '2019-10-11T01:00:00.000000000', '2019-10-11T01:30:00.000000000', # '2019-10-11T02:00:00.000000000', '2019-10-11T02:30:00.000000000', # '2019-10-11T03:00:00.000000000', '2019-10-11T03:30:00.000000000', # '2019-10-11T04:00:00.000000000', '2019-10-11T04:30:00.000000000', # '2019-10-11T05:00:00.000000000', '2019-10-11T05:30:00.000000000', # '2019-10-11T06:00:00.000000000', '2019-10-11T06:30:00.000000000'], # dtype='datetime64[ns]')
import pandas as pd s = pd.Series(time) s = s.dt.tz_localize('UTC') s = s.dt.tz_convert('Asia/Tokyo') s = s.dt.tz_localize(None) s.values #array(['2019-10-11T09:00:00.000000000', '2019-10-11T09:30:00.000000000', # '2019-10-11T10:00:00.000000000', '2019-10-11T10:30:00.000000000', # '2019-10-11T11:00:00.000000000', '2019-10-11T11:30:00.000000000', # '2019-10-11T12:00:00.000000000', '2019-10-11T12:30:00.000000000', # '2019-10-11T13:00:00.000000000', '2019-10-11T13:30:00.000000000', # '2019-10-11T14:00:00.000000000', '2019-10-11T14:30:00.000000000', # '2019-10-11T15:00:00.000000000', '2019-10-11T15:30:00.000000000', # '2019-10-11T16:00:00.000000000', '2019-10-11T16:30:00.000000000' ], # dtype='datetime64[ns]')