Python / Numpy数组维度混乱

时间:2016-09-10 09:44:02

标签: python numpy

假设* { margin: 0; padding: 0; box-sizing : border-box; } body { max-width: 400px; margin: 0 auto; font-family: 'Helvetica Neue', Helvetica, Tahoma, Arial, sans-serif; } .container { padding: 50px; background: rgb(121,68,160); background: -moz-linear-gradient(left, rgba(121,68,160,1) 0%, rgba(86,93,181,1) 100%); background: -webkit-linear-gradient(left, rgba(121,68,160,1) 0%,rgba(86,93,181,1) 100%); background: linear-gradient(to right, rgba(121,68,160,1) 0%,rgba(86,93,181,1) 100%); filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#7944a0', endColorstr='#565db5',GradientType=1 ); } h1 { margin-bottom: 15px; color: #EEE; } .input { margin-bottom: 10px; } .input:last-child { margin-bottom: 0; } input, button { font-size: 16px; border: none; width: 100%; outline: 0; font-family: 'Helvetica Neue', Helvetica, Tahoma, Arial, sans-serif; padding: 10px 14px; border-radius: 7px; color: #FFF; cursor: pointer; } input { background: rgba(255,255,255,0.2); } button { background: transparent; border: 2px solid rgba(255,255,255,0.2); color: rgba(255,255,255,0.45); font-weight: bold; } ::-webkit-input-placeholder { color: #DDD; } ::-moz-placeholder { color: #DDD; }。 我创建了一个批处理:<div class="container"> <h1>User Login</h1> <form action="#"> <div class="input"> <input type="text" placeholder="Username"> </div> <div class="input"> <input type="password" placeholder="Password"> </div> <div class="input" style="margin-top: 20px;"> <button>Login</button> </div> </form> </div>。假设我有一批字符,其中batch_size = 64的大小为64,batch = np.zeros((self._batch_size,), dtype=np.int64)将表示为batch = ['o', 'w', ....'s'] 1-热矢量,大小为27。 那么,有没有什么方法可以使批处理仍然具有batch_size的形状而不是batch_size x vocabulary_size? 代码如下:

'o'

此返回批处理作为batch_size x vocabulary_size的维度。

[0,0, .... 0]

此代码返回太少指数的错误 有没有办法将数组大小指定为batch = np.zeros((self._batch_size,), dtype=np.int64) temp1 = list() for b in range(self._batch_size): temp = np.zeros(shape=(vocabulary_size), dtype=np.int64) temp[char2id(self._text[self._cursor[b]])] = 1.0 temp1.append(temp) self._cursor[b] = (self._cursor[b] + 1) % self._text_size batch = np.asarray(list) return batch

1 个答案:

答案 0 :(得分:1)

在第一个块中,batchzeros的初始化对您没有任何作用,因为batch稍后会替换为asarray(temp1)。 (注意我的更正)。 temp1是一个1d数组(temp)的列表,并生成一个2d arrray。

如果从batch=np.zeros((batch_size, vocab_size))开始,则在第二个中,您将避免索引编号错误。

您不能使用None而不是实数。 None在这里不像广播newaxis那样有效。通过分配新的更大索引,数组不会增长。即使用于索引np.zeros((batchsize,))[:,None],结果也是2d,shape(batchsize,1)。

为什么要一个1d数组?可以构造一个包含数组(或任何其他对象)的dd对象的1d数组,但是出于许多目的,它只是一个美化的列表。