我正在使用for循环从2个数组中提取值,然后将它们放在一个新数组中。我可以得到数组的最后一行,但不是它之前的所有行。 (我想将每一行追加到同一个数组。)有什么想法吗?
import numpy as np
# Array inputs
a = np.array([0, 1, 2])
b = np.array([[1, 10, 20, 30], [2, 40, 50, 60], [3, 70, 80, 90]])
请注意,a数组将是随机的,具体取决于加载的文件。因此,对于一个文件,它可能是:
([1, 1, 2])
然后对于另一个文件可能是:
([0, 2, 1])
因此,a数组查找b数组的第一个值,然后在索引此操作时获取其最后3个值。
从这两个数组中,我想要一个像这样的新数组:
# ([[0, 10, 20, 30],
# [1, 40, 50, 60],
# [2, 70, 80, 90]])
这是我的循环:
# Loop to put all values in c and d arrays:
for index, value in enumerate(np.nditer(a)):
c = b[value][1:4]
d = index
# Stack c and d array into e
e = np.hstack((c, d))
但是回复:
([2, 70, 80, 90]) # Only last line of loop.
# I wish to get last line and all lines before it.
答案 0 :(得分:2)
不使用for
循环,您可以将b
的内容复制到e
,然后将所有行的e
内容替换为第一列(使用 e[:,0]
)a
:
import numpy as np
# Array inputs
a = np.array([0, 1, 2])
b = np.array([[1, 10, 20, 30], [2, 40, 50, 60], [3, 70, 80, 90]])
e = np.copy(b)
e[:,0] = a
print(e)
结果:
[[ 0 10 20 30]
[ 1 40 50 60]
[ 2 70 80 90]]