如何获得相对于当前索引的4个元素。例如在一个numpy数组中:
a = np.random.random((5,5)) * 5
看起来像
array([[0.28849442, 1.6967782 , 3.98677035, 3.70602532, 3.86017719],
[0.93613671, 1.71077358, 4.97554427, 3.60912429, 4.59531928],
[4.77133051, 1.76220853, 4.11181087, 1.78716602, 2.37373539],
[4.12093364, 3.54107656, 0.63393302, 3.16444722, 4.89785727],
[1.80700625, 0.60800477, 3.82513151, 1.64708491, 1.32580387]])
对于row = 1和column = 1,我需要获取前两个和后两个元素。此处的值为:0.93613671, 4.97554427, 3.60912429
。
我该如何使用切片语法?
答案 0 :(得分:2)
如果要将同一行中的前两个元素和下一个元素 。
i, j = 1, 1
a = [i, max(0, j -2):min(a.shape[1] + 1, j + 3)]
但是,这也会返回值a [i,j]。
答案 1 :(得分:0)
这应该可以解决问题:
In [11]: a = np.random.random((5, 5)) * 5
In [12]: a
Out[12]:
array([[2.69912989, 0.22025657, 4.42243823, 2.25742595, 2.32710693],
[1.80637901, 4.3168534 , 3.60375159, 1.35948513, 4.01575109],
[3.08628445, 3.90280485, 2.88931891, 3.68739947, 2.88882592],
[4.78280824, 2.51712145, 3.17672241, 1.10675052, 4.9237791 ],
[3.84915085, 3.45205488, 4.29567419, 0.57508107, 1.43595208]])
In [13]: i, j = 1, 1
In [14]: temp = a[i, max(0, j - 2):j + 3]
In [15]: temp
Out[15]: array([1.80637901, 4.3168534 , 3.60375159, 1.35948513])
In [16]: a = np.delete(temp, len(temp) // 2 - 1)
In [17]: a
Out[17]: array([1.80637901, 3.60375159, 1.35948513])
答案 2 :(得分:0)
import np
a = np.random.random((5,5)) * 5
b = int(input("Line:"))
c = int(input("Column:"))
for i in set(range(c-2, c)).union(set(range(c+1, c+3))):
if i in range(0, 5):
print(a[b][i])