为了账号安全,请及时绑定邮箱和手机立即绑定

使用列表理解创建二维 numpy 数组

使用列表理解创建二维 numpy 数组

HUH函数 2023-09-19 15:01:29
我需要仅使用列表理解创建一个二维 numpy 数组,但它必须遵循以下格式:[[1, 2, 3], [2, 3, 4], [3, 4, 5], [4, 5, 6], [5, 6, 7]]]到目前为止,我所能弄清楚的是:two_d_array = np.array([[x+1 for x in range(3)] for y in range(5)])给予:array([[1, 2, 3],       [1, 2, 3],       [1, 2, 3],       [1, 2, 3],       [1, 2, 3]])只是不太确定如何更改增量。任何帮助将不胜感激,谢谢!编辑:示例中不小心遗漏了 [3,4,5]。现在包括在内。
查看完整描述

3 回答

?
www说

TA贡献1775条经验 获得超8个赞

这是一个可以完成这项工作的快速单行文字:

np.array([np.arange(i, i+3) for i in range(1, 6)])

其中3是列数或每个数组中的元素数,6是要执行的迭代次数 - 或者在本例中是要创建的数组数;这就是输出中有 5 个数组的原因。

输出:

array([[1, 2, 3],
       [2, 3, 4],
       [3, 4, 5],
       [4, 5, 6],
       [5, 6, 7]])


查看完整回答
反对 回复 2023-09-19
?
守候你守候我

TA贡献1802条经验 获得超10个赞

更改代码,类似这样的事情可以工作:


two_d_array = np.array([[(y*3)+x+1 for x in range(3)] for y in range(5)])

>>> [[1,2,3],[4,5,6],...]

two_d_array = np.array([[y+x+1 for x in range(3)] for y in range(5)])

>>> [[1,2,3],[2,3,4],...]


查看完整回答
反对 回复 2023-09-19
?
慕少森

TA贡献2019条经验 获得超9个赞

你已经得到了一些很好的理解答案,所以这里有一些 numpy 解决方案。


简单加法:


np.arange(1, 6)[:, None] + np.arange(3)

疯狂的跨步技巧:


base = np.arange(1, 8)

np.lib.stride_tricks.as_strided(base, shape=(5, 3), strides=base.strides * 2).copy()

重塑累积和:


base = np.ones(15)

base[3::3] = -1

np.cumsum(base).reshape(5, 3)


查看完整回答
反对 回复 2023-09-19
  • 3 回答
  • 0 关注
  • 97 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信