Numpy之np.empty和np.append追加组合http://t.csdn.cn/xAR9Q
上次Numpy文章的最后使用np.append实现了一个常用的追加结构,代码及结果如下:
import numpy as np
a = np.empty(shape=(0, 3))
for i in range(5):
values = [i, i ** 2, i + i ** 2]
row_values = np.expand_dims(np.array(values), axis=0)
a = np.append(a, row_values, axis=0)
print(a)
'''
>>>[[ 0. 0. 0.]
[ 1. 1. 2.]
[ 2. 4. 6.]
[ 3. 9. 12.]
[ 4. 16. 20.]]
'''
虽然实现了功能,但显然不够优雅。正如标题所见,这里就用列表推导式,重新实现。
import numpy as np
a = np.array([[i,i**2,i+i**2] for i in range(5)])
其中,a的格式还是ndarray,并没有偷工减料。可以明显地看出,列表推导式用在这里非常合适,可读性以及性能要好很多。
列表推导式
a = [i for i in range(10) if i<5]
'''
[0, 1, 2, 3, 4]
'''
由简单的例子,可以看出列表推导式依次由三个部分组成,
[表达式 for 变量 in 列表 if 条件]
if 条件是可选项。当然,推导式还有很多用法,简单使用会有很不错的效果,但是稍微复杂一些就会造成可读性急速下降,所以还是点到为止。