我想迭代一个2dnumpy数组(特别是使用nditer),并保留迭代数组的维数。在此过程中,我希望避免对迭代元素进行任何操作。解决方案只能在迭代数组或迭代器上设置一次。你知道吗
import numpy as np
X = np.random.randn(5, 2)
for row in X:
print(row.shape)
>>> (2,)
(2,)
(2,)
(2,)
(2,)
但我希望:
>> (1, 2)
(1, 2)
(1, 2)
(1, 2)
(1, 2)
我想找到一个只能应用一次的解决方案,而不是像row = row.reshape(1,-1)
这样的每一行。你知道吗
在数组上迭代类似于在列表列表上迭代-它返回第一个维度上索引的元素:
您可以迭代索引,并使用列表索引:
X[[1]]
、X[1:2]
、X[1][None,:]
、X[None,1]
都是这样做的。你知道吗我不认为有一种方法可以把这些直接合并到一个
表情。你知道吗
nditer
使用起来可能很笨拙。通常,它在元素级别进行迭代,而不是在“row”级别,从而得到一个0d数组。它并不比for
迭代快。所以我觉得这没用。你知道吗======
建议链接Numpy index slice without losing dimension information启发我尝试:
实际上,我将
X
转换成一个(5,1,2)数组,因此第一维度上的迭代产生(1,2)个元素。我没有保留一个维度,而是添加了一个维度。你知道吗相关问题 更多 >
编程相关推荐