- 입력 데이터는 1 차원 numpy 배열 목록입니다.
x[0] = [ array([1.0,1.0,1.0]), array([2.0,2.0,2.0]), ...]
len(x)
은 수천 (행)이며,len(x[n])
은 고정 된 수 (열)이지만 실행마다 바뀔 수 있습니다 (따라서 여러 열을 하드 코딩하지 않으려합니다).- 기능
f(x[n][col])
는 - 원하는 결과가
이 목록 플로팅위한 변환 열의 목록 단일 번호로 각각 array
변환, 그래서 그들은 NumPy와 데이터 구조 일 수있다.numpy의 데이터 변환
import numpy
# create test data set
def datagen(number):
return numpy.array([number,number,number])
x=[]
for rows in range(20):
dataline = [ datagen(n) for n in range(5)]
x.append(dataline)
#define transformation of array to single number
def f(in_array):
return in_array.sum()
NumPy와, 방법의 파이썬 정렬 얻을 result-- 원하는 :이 경우 각 배열 (20)을 갖는다
[ array([0,0,0,...0]), array([3,3,3,....,3]), array([6,6,6,...,6]), ..etc]
여기서 테스트 데이터 및 명목 변환을 설정하는 일부 코드 요소 (각 데이터 행마다 하나씩)와 목록에 5 개의 배열 (각 열에 하나씩)이 있습니다.
여기에 내 현재의 솔루션입니다 :
trans = []
for dataline in x:
trans.append([f(a) for a in dataline])
trans = numpy.array(trans)
answer = [ trans[:,col] for col in range(len(x[0])) ]
너무 초라한하지만 내 머리가 아파와 난이 더 잘 할 수있는 느낌이 듭니다. ???
실생활에서 f (a) = numpy.sqrt(numpy.vdot(a,a))
.
무엇 '과 같이 f'는 무엇입니까? 함수를 vectorise하려면, 함수가 무엇을하는지 알아야합니다. –
안녕하세요, Sven, 벡터의 크기 (편집 된 게시물)입니다. – Pete
정말 numpy 배열 목록을 사용해야합니까? 3D 배열을 사용하기 시작했다면이 코드는 한 줄짜리 코드 일 것입니다. ('ndarray.sum'은 단일 축을 따라 쉽게 작동 할 수 있습니다.) –