teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

3

タイトルでは質問内容が不明瞭なため、修正いたしました。

2018/07/15 10:47

投稿

yohehe
yohehe

スコア48

title CHANGED
@@ -1,1 +1,1 @@
1
- (1,200,1)の次元の際からデータを取り出す内包表記について
1
+ (1,200,1)の次元の際からデータを取り出す手法について。[d[0] for d in data]やlambdaなどでデータを取り出していくことは可能でしょうか。
body CHANGED
File without changes

2

修正依頼に対して具体的な課題点を含めて追記いたしました。

2018/07/15 10:47

投稿

yohehe
yohehe

スコア48

title CHANGED
File without changes
body CHANGED
@@ -6,7 +6,7 @@
6
6
  ```python
7
7
  import numpy as np
8
8
 
9
- a=np.random.randn(200)
9
+ a=np.arange(200)
10
10
  #わざとshapeを変更しています。
11
11
  a=a.reshape(1,200,1)
12
12
 
@@ -20,4 +20,42 @@
20
20
  (1,200,1)などの3次元のデータの際の内包表記はどのようにアクセスすればよろしいでしょうか?
21
21
  色々とためしているのですが、d[]の部分の記載方法がわからないです。
22
22
 
23
- 初歩的な問題ですが、よろしくお願い致します。
23
+ 初歩的な問題ですが、よろしくお願い致します。
24
+
25
+
26
+ 追記
27
+
28
+ 具体的にはRNNを利用した数値予測のプログラム作成の勉強をしております。
29
+ 必要があれば全てのプログラムを追記いたしますが、RNNでLSTMを使用してmodel.fitした分類器を作成したところまでは省略ています。
30
+
31
+ ```python
32
+ #dataはlist形式です。predictにかけるためにreshapeを行います。
33
+ suitei=np.array(data)
34
+ suitei_len=len(suitei)
35
+ #分類器にかけられるshapeが(1,5,1)のため、shapeを変更する。
36
+ suitei=np.array(data).reshape(1,suitei_len,1)
37
+ suitei.shape
38
+ #この時点でarrayは(1,143,1)です。
39
+
40
+ #このデータの末尾5つを分類器に格納していき50回の次点でのデータを予測したいとすると
41
+
42
+ yosou_data=[]
43
+ for i in range(50):
44
+ temp_data=suitei[:,-5:,:]
45
+ temp_data=np.array(temp_data).reshape(1,5,1)
46
+ #predictを適応するためには、(1,5,1)のarrayである必要。
47
+ temp_yosou=model.predict(temp_data)
48
+ print(temp_yosou)
49
+ print(np.array(temp_yosou).shape)
50
+ temp_yosou=np.array(temp_yosou).reshape(1,1,1)
51
+ #もとのsuiteiのshapeに戻してhstackで最後尾のデータとして格納。そのデータからまた末尾5個を取り出してpredictを行いたい。
52
+ yosou_data.append(temp_yosou)
53
+ temp_suitei=np.hstack((suitei,temp_yosou))
54
+ suitei=temp_suitei
55
+ print(temp_suitei.shape)
56
+ print(temp_suitei[:,-1,:])
57
+
58
+ コード
59
+ ```
60
+ 今のところこのようにreshapeを多数かけて形式を変えながらデータをpredictと格納を繰り返している状態です。
61
+ プログラミング初心者で内包表記でもっと簡易な記載方法があればと思い、検討しているのですが。

1

文章修正

2018/07/15 10:34

投稿

yohehe
yohehe

スコア48

title CHANGED
File without changes
body CHANGED
@@ -1,13 +1,16 @@
1
1
  array shapeが(1,200,1)の3次元のデータshapeからデータが格納されている次元にアクセスする内包表記の書き方がわかりません。
2
+ deeplearningなどで特徴量などを編集したい場合にshapeが3次元になるっている場合が多々ありますので、プログラムをまとめたいと考えております。
3
+ 現在はreshape(),reshape(-1)などで途中途中で次元の削減などを何度か行うことでプログラミングをしているのですが、内包表記などでの対応が可能かどうか勉強しております。
2
4
 
3
5
  例えば
4
6
  ```python
5
7
  import numpy as np
6
8
 
7
9
  a=np.random.randn(200)
10
+ #わざとshapeを変更しています。
8
11
  a=a.reshape(1,200,1)
9
12
 
10
- #aから50個取り出すとすると
13
+ #aから50個取り出すとすると、以下でアクセス
11
14
  b=a[,0:49,]
12
15
  #200のデータにアクセスして5をかけてlistとしてcに格納したいとすると
13
16
  c=[d[,:,]*5 for d in a]
@@ -16,5 +19,5 @@
16
19
  ```
17
20
  (1,200,1)などの3次元のデータの際の内包表記はどのようにアクセスすればよろしいでしょうか?
18
21
  色々とためしているのですが、d[]の部分の記載方法がわからないです。
19
- reshapeして取り出した方がいいのでしょうか。
22
+
20
23
  初歩的な問題ですが、よろしくお願い致します。