我可以设置一个函数来调用列表中的特定索引吗?
Can I set a function to call a specific index from a list?
我有 n
个长度为 p
的列表(实际上是数组,但我将它们视为列表)。我想从第一行、第二行和第三行中提取前三个值。这是我目前所拥有的:
k0= K[0][0:3]
k1= K[1][0:3]
k2= K[2][0:3]
哪里
k0= [a,b,c]
k1= [d,e,f]
k2= [g,h,i]
这样
concatenated_ko = []
for j in range(0,3):
k = "k"+str(j)
concatenated_ko.append(k)
print(concatenated_ko)
当前打印
['k0','k1','k2']
但应该打印
[a,b,c,d,e,f,h,i,j]
编辑:我认为归根结底是我最初使用了一个从 <class 'numpy.ndarray'>
变为 <class 'str'>
的对象。通过 np.ndarray(k)
强制将类型从字符串更改为数组也不起作用。
有什么办法改回来吗?
如果你想达到[a,b,c,d,e,f,h,i,j]
你可以这样做:
concatenated_ko = []
for arr in [k0, k1, k2]:
concatenated_ko += [*arr]
你说过你“想从第一行、第二行和第三行中提取前三个值”。因此,与其分别创建三个列表 k0
、k1
和 k2
,您可以将其放入迭代中并直接对 K
进行操作,方法是先将前 3 个切片列。
A.
concatenated_ko = []
for row in K[:3]:
concatenated_ko.extend(row[:3])
B. 或者,如果你想使用索引:
concatenated_ko = []
for idx in range(3):
concatenated_ko.extend(K[idx][:3])
C. 假设 K 是一个 5x5 数组:
>>> K
array([[ 5, 12, 10, 70, 4],
[102, 6, 120, 60, 22],
[150, 100, 110, 2, 150],
[ 15, 20, 22, 70, 30],
[ 20, 55, 1, 70, 1]])
然后要将前 3 行的前 3 列作为单个数组获取,您可以使用 ndarray.flatten()
:
>>> K[:3, :3].flatten()
array([ 5, 12, 10, 102, 6, 120, 150, 100, 110])
>>> K[:3, :3].flatten().tolist()
[5, 12, 10, 102, 6, 120, 150, 100, 110]
另一种选择,不推荐:要对原始代码进行小幅修改,请使用 eval
从变量名中获取列表,然后使用 extend
而不是 append
:
# with k0, k1, k2 setup as per your question
for j in range(0,3):
k = "k"+str(j)
concatenated_ko.extend(eval(k))
我有 n
个长度为 p
的列表(实际上是数组,但我将它们视为列表)。我想从第一行、第二行和第三行中提取前三个值。这是我目前所拥有的:
k0= K[0][0:3]
k1= K[1][0:3]
k2= K[2][0:3]
哪里
k0= [a,b,c]
k1= [d,e,f]
k2= [g,h,i]
这样
concatenated_ko = []
for j in range(0,3):
k = "k"+str(j)
concatenated_ko.append(k)
print(concatenated_ko)
当前打印
['k0','k1','k2']
但应该打印
[a,b,c,d,e,f,h,i,j]
编辑:我认为归根结底是我最初使用了一个从 <class 'numpy.ndarray'>
变为 <class 'str'>
的对象。通过 np.ndarray(k)
强制将类型从字符串更改为数组也不起作用。
有什么办法改回来吗?
如果你想达到[a,b,c,d,e,f,h,i,j]
你可以这样做:
concatenated_ko = []
for arr in [k0, k1, k2]:
concatenated_ko += [*arr]
你说过你“想从第一行、第二行和第三行中提取前三个值”。因此,与其分别创建三个列表 k0
、k1
和 k2
,您可以将其放入迭代中并直接对 K
进行操作,方法是先将前 3 个切片列。
A.
concatenated_ko = []
for row in K[:3]:
concatenated_ko.extend(row[:3])
B. 或者,如果你想使用索引:
concatenated_ko = []
for idx in range(3):
concatenated_ko.extend(K[idx][:3])
C. 假设 K 是一个 5x5 数组:
>>> K
array([[ 5, 12, 10, 70, 4],
[102, 6, 120, 60, 22],
[150, 100, 110, 2, 150],
[ 15, 20, 22, 70, 30],
[ 20, 55, 1, 70, 1]])
然后要将前 3 行的前 3 列作为单个数组获取,您可以使用 ndarray.flatten()
:
>>> K[:3, :3].flatten()
array([ 5, 12, 10, 102, 6, 120, 150, 100, 110])
>>> K[:3, :3].flatten().tolist()
[5, 12, 10, 102, 6, 120, 150, 100, 110]
另一种选择,不推荐:要对原始代码进行小幅修改,请使用 eval
从变量名中获取列表,然后使用 extend
而不是 append
:
# with k0, k1, k2 setup as per your question
for j in range(0,3):
k = "k"+str(j)
concatenated_ko.extend(eval(k))