간단한 목록을 numpy 배열로 어떻게 변환합니까? 행은 개별 하위 목록이며 각 행은 하위 목록의 요소를 포함합니다.
답변
목록에 다양한 수의 요소가 포함 된 목록이 있으면 Ignacio Vazquez-Abrams의 답변이 작동하지 않습니다. 대신 3 가지 이상의 옵션이 있습니다.
1) 배열 배열을 만듭니다.
x=[[1,2],[1,2,3],[1]]
y=numpy.array([numpy.array(xi) for xi in x])
type(y)
>>><type 'numpy.ndarray'>
type(y[0])
>>><type 'numpy.ndarray'>
2) 목록 배열을 만듭니다.
x=[[1,2],[1,2,3],[1]]
y=numpy.array(x)
type(y)
>>><type 'numpy.ndarray'>
type(y[0])
>>><type 'list'>
3) 먼저 목록의 길이를 동일하게 만드십시오.
x=[[1,2],[1,2,3],[1]]
length = max(map(len, x))
y=numpy.array([xi+[None]*(length-len(xi)) for xi in x])
y
>>>array([[1, 2, None],
>>> [1, 2, 3],
>>> [1, None, None]], dtype=object)
답변
>>> numpy.array([[1, 2], [3, 4]])
array([[1, 2], [3, 4]])
답변
이것은 목록 목록을 Numpy 배열로 변환하는 Google의 최고 검색이므로 4 세라는 질문에도 불구하고 다음을 제공합니다.
>>> x = [[1, 2], [1, 2, 3], [1]]
>>> y = numpy.hstack(x)
>>> print(y)
[1 2 1 2 3 1]
내가 이런 식으로 처음 생각했을 때, 너무 간단해서 나 자신에 매우 만족했다. 그러나 더 큰 목록으로 타이밍을 정한 후에는 실제로 이렇게하는 것이 더 빠릅니다.
>>> y = numpy.concatenate([numpy.array(i) for i in x])
>>> print(y)
[1 2 1 2 3 1]
@Bastiaan의 답변 # 1은 단일 연속 목록을 만들지 않으므로을 추가했습니다 concatenate
.
어쨌든 … 나는 hstack
Numpy를 우아하게 사용하기위한 접근법을 선호합니다 .
답변
다음과 같이 간단합니다.
>>> lists = [[1, 2], [3, 4]]
>>> np.array(lists)
array([[1, 2],
[3, 4]])
답변
다시 말하지만, N 레벨의 중첩 목록을 N 차원 배열로 변환하는 문제를 검색 한 후에는 아무것도 찾지 못했습니다.
import numpy as np
new_array=np.array([[[coord for coord in xk] for xk in xj] for xj in xi], ndmin=3) #this case for N=3
답변
나는 길이가 같은 목록을 가지고있었습니다. 그때조차도 Ignacio Vazquez-Abrams
대답이 나에게 적합하지 않았습니다. 요소가 목록 인 1-D numpy 배열이 있습니다. 같은 문제가 발생하면 아래 방법을 사용할 수 있습니다
사용하다 numpy.vstack
import numpy as np
np_array = np.empty((0,4), dtype='float')
for i in range(10)
row_data = ... # get row_data as list
np_array = np.vstack((np_array, np.array(row_data)))
답변
그냥 팬더를 사용하십시오
list(pd.DataFrame(listofstuff).melt().values)
이것은 목록 목록에서만 작동합니다.
당신이 목록의 목록을 가지고 있다면 당신은의 라인을 따라 무언가를 시도 할 수
lists(pd.DataFrame(listofstuff).melt().apply(pd.Series).melt().values)