Как получить конкретные значения из моих данных на основе значений массива, используя numpy? - PullRequest
0 голосов
/ 21 ноября 2019

У меня есть массив данных, в который я вставил столбец со значениями, начинающимися с 0. Так что теперь мои данные содержат все значения с плавающей запятой.

После некоторой обработки у меня есть массив ARR, который содержит значения из моего 1-го столбца. Используя эти значения ARR (или позиции), я хочу извлечь оставшиеся столбцы в новый массив, используя Numpy.

import numpy as np
import io
data =io.StringIO("""
ID,1,2,3
5362,0.97,-0.40,-0.76
485,-0.65,0.53,0.62
582,0.04,0.99,0.76
99,0.77,0.53,0.39
75,-0.44,0.52,0.85
474,0.35,0.8,0.13
594,-0.29,0.03,0.74
597,0.96,-0.35,0.59
124,0.73,0.61,0.76
635,0.88,0.96,-0.98
7894,-0.04,0.04,0.52
1268,0.56,0.73,-0.37
38,0.46,0.62,0.73
88,0.02,0.16,0.098
887,0.46,0.65,-0.89
""")

data = np.genfromtxt(data, delimiter=',', skip_header=2, dtype=np.float64)
index = np.arange(data.shape[0]).reshape(-1, 1)
data = np.hstack([index, data])


ARR = [[1.],[2.],[4.],[6.],[7.],[9.]]

Ожидаемый результат Like:

Я хочу, чтобы все значения строк в позицияхуказано в ARR. Я также могу показать это как целочисленные значения. Я хочу, чтобы все строки в этих позициях в моем массиве данных.

485,-0.65,0.53,0.62
582,0.04,0.99,0.76
75,-0.44,0.52,0.85
594,-0.29,0.03,0.74
597,0.96,-0.35,0.59
635,0.88,0.96,-0.98

1 Ответ

1 голос
/ 21 ноября 2019

Вам нужно только сделать следующее (не нужно добавлять столбец индекса к данным). Также я не понимаю, почему вы указываете номера строк как числа с плавающей точкой (1., 2., 4.,...). Ваши номера строк должны быть целыми числами. Решение здесь исправляет этот аспект.

# np.set_printoptions(precision=3, suppress=True)
data = np.genfromtxt(data, delimiter=',', skip_header=2, dtype=np.float64)
ARR = [[1.],[2.],[4.],[6.],[7.],[9.]]
ARR = np.array(ARR).astype(int).flatten()
data[ARR, :]

Выход :

array([[485.  ,  -0.65,   0.53,   0.62],
       [582.  ,   0.04,   0.99,   0.76],
       [ 75.  ,  -0.44,   0.52,   0.85],
       [594.  ,  -0.29,   0.03,   0.74],
       [597.  ,   0.96,  -0.35,   0.59],
       [635.  ,   0.88,   0.96,  -0.98]])

Опционально :
В случае, если необходимо добавить index,затем используйте следующий блок кода в дополнение к коду, который вы разместили в вопросе.

ARR = np.array(ARR).astype(int).flatten()
data[ARR, 1:]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...