Простите меня, если что-то о том, что я хотел спросить, звучит глупо, я только начал с Numpy и многомерными массивами в Python: DКак итерация 3D-Numpy массива
, что сказал, я У вас есть 3D-массив [85 x 235 x 327]. Каждая позиция имеет дискретное значение и, в большинстве случаев, NaN.
Первое, что я хотел бы сделать, это перебрать этот массив и удалить значения NaN, построив новый массив, содержащий только допустимые значения.
Я попытался это:
for index,value in np.ndenumerate(data):
print "index value: " + str(index)
print "value: " + str(value)
Но это будет только выполнить один проход ... не совсем уверен, что ndenumerate
делает.
попытался Также это:
indexOne = waves.shape[0]
indexTwo = waves.shape[1]
indexThree = waves.shape[2]
for i in range(indexOne):
for j in range(indexTwo):
for k in range(indexThree):
a = waves[i,j,k]
print a.data
И в то время как это делает перебирает ... принимая во внимание, что у меня есть 6531825 точек ... это будет длиться вечно ... Таким образом, есть ли встроенная в функции для удаления значений из существующего массива без необходимости повторять все элементы?
Что вы подразумеваете под "удалить"? Это звучит так, будто вам нужен ровный массив, содержащий только значения, отличные от nan. Или вы хотите, чтобы значения заменялись чем-то другим? – senderle
Прочитали ли вы http://wiki.scipy.org/Tentative_NumPy_Tutorial или http://scipy-lectures.github.io/intro/numpy/index.html? Я думаю, вы найдете это полезным. – YXD
@senderle Я просто хочу избавиться от этих значений, имея окончательный массив со всеми значениями, сохраняя форму, если это возможно, в противном случае - плоский массив. – AlejandroVK