考虑以下方便的循环习语。
import numpy
print "shape of"
x = numpy.array([['a', 'b'], ['c', 'd']])
print x
print "is", x.shape
for row in x:
print "shape of", row, "is", row.shape
这给出了
shape of
[['a' 'b']
['c' 'd']]
is (2, 2)
shape of ['a' 'b'] is (2,)
shape of ['c' 'd'] is (2,)
我的问题是,在这种情况下,可以在返回具有形状(2,1)的数组时保留方便的for row in x
习语吗?谢谢。
将子阵列的形状从(2,)转换为(2,0)的函数将是正常的。 E.g。
for row in x:
print "shape of", somefunc(row), "is", row.shape
返回
shape of ['a' 'b'] is (2,1)
答案 0 :(得分:2)
您可以使用numpy.expand_dim
来增加任何numpy数组的排名:
In [7]: x=np.array([1,2,3,4])
In [8]: x.shape
Out[8]: (4,)
In [9]: np.expand_dims(x,axis=-1).shape
Out[9]: (4, 1)
答案 1 :(得分:1)
我不明白为什么你会这么想,但你可以尝试一下:
for row in x:
print "shape of", row, "is", numpy.reshape(row, (1, row.size)).shape
在我看来,1d阵列更容易处理。因此,将它重塑为“1d矩阵”并没有多大意义。