【发布时间】:2019-06-27 00:33:42
【问题描述】:
元素如何从(只取范围 3 到 8)
a = np.array([1,2,3,4,5,6,7,8,9])
去
A = np.array([[0,0,0],
[0,0,0]])
理想的输出是:
A = ([[3,4,5],
[6,7,8]])
【问题讨论】:
元素如何从(只取范围 3 到 8)
a = np.array([1,2,3,4,5,6,7,8,9])
去
A = np.array([[0,0,0],
[0,0,0]])
理想的输出是:
A = ([[3,4,5],
[6,7,8]])
【问题讨论】:
np.arange(3, 9).reshape((2, 3))
输出
array([[3, 4, 5],
[6, 7, 8]])
【讨论】:
假设您有一个现有的numpy数组a,一种可能的技术是使用slicing和reshaping:
>>> a = np.array([1,2,3,4,5,6,7,8,9])
>>> a
array([1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> A = a[2:-1]
>>> A
array([3, 4, 5, 6, 7, 8])
>>> A.reshape((2, 3))
>>> A
array([[3, 4, 5],
[6, 7, 8]])
上述解决方案假定您知道在进行切片时选择哪个索引。在这种情况下,我假设我们知道元素3 出现在第二个索引位置,并且我假设我们知道最后一个所需元素8 出现在数组中倒数第二个位置(在索引@987654329 @)。为清楚起见:切片从给定索引开始,但上升到并且不包括第二个索引位置,并且通过使用负索引号向后计数通常更容易找到靠近列表末尾的索引位置我已经完成这里。另一种方法是使用最后一个元素的索引位置,即8:
A = a[2:8].
单线解决方案是将方法调用以菊花链方式连接在一起:
>>> a = np.array([1,2,3,4,5,6,7,8,9])
>>> a
array([1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> A = a[2:-1].reshape((2, 3))
>>> A
array([[3, 4, 5],
[6, 7, 8]])
【讨论】: