배열의 열에 대해 반복하는 방법은 무엇입니까?
그리고 mxn 배열이 있다고 가정합니다.이 배열의 각 열을 전체 열에 대한 연산을 수행하기 위한 함수에 전달하고자 합니다.배열의 열에 대해 반복하려면 어떻게 해야 합니까?
예를 들어, 저는 4 x 3 배열을 가지고 있습니다.
1 99 2
2 14 5
3 12 7
4 43 1
for column in array:
some_function(column)
여기서 열은 첫 번째 반복에서 "1,2,3,4", 두 번째 반복에서 "99,14,12,43", 세 번째 반복에서 "2,5,7,1"이 됩니다.
배열의 전치를 반복합니다.
for column in array.T:
some_function(column)
이것은 당신에게 시작을 줄 것입니다.
>>> for col in range(arr.shape[1]):
some_function(arr[:,col])
[1 2 3 4]
[99 14 12 43]
[2 5 7 1]
3차원 배열의 경우 다음을 시도해 볼 수 있습니다.
for c in array.transpose(1, 0, 2):
do_stuff(c)
작동 방식에 대한 문서를 참조합니다.기본적으로 이동할 치수를 지정하는 것입니다.이 경우 두 번째 차원(예: 열)을 첫 번째 차원으로 이동합니다.
압축 풀기를 사용하여 열을 반복할 수도 있습니다.
for col in zip(*array):
some_function(col)
for c in np.hsplit(array, array.shape[1]):
some_fun(c)
그 질문은 오래된 것이지만 요즘 찾는 사람들은 누구나 할 수 있습니다.
다음과 같이 numpy 배열의 행을 반복할 수 있습니다.
for row in array:
some_function(row) # do something here
따라서 2D 배열의 열을 통해 반복하려면 다음과 같이 간단히 전치할 수 있습니다.
transposed_array = array.T
#Now you can iterate through the columns like this:
for column in transposed_array:
some_function(column) # do something here
예를 들어 각 열의 결과를 목록으로 수집하려면 목록 이해력을 사용할 수 있습니다.
[some_function(column) for column in array.T]
요약하면 배열의 각 열에 대해 함수를 수행하고 다음 코드 라인을 사용하여 결과를 목록으로 수집할 수 있습니다.
result_list = [some_function(column) for column in array.T]
예를 들어 행렬에서 각 열의 평균을 구하려고 합니다.다음 행렬을 만들어 보겠습니다.
mat2 = np.array([1,5,6,7,3,0,3,5,9,10,8,0], dtype=np.float64).reshape(3, 4)
평균에 대한 함수는
def my_mean(x):
return sum(x)/len(x)
필요한 일을 하고 결과를 저장하는 것은 대장 벡터 '결과'로 이어집니다.
results = np.zeros(4)
for i in range(0, 4):
mat2[:, i] = my_mean(mat2[:, i])
results = mat2[1,:]
결과는 다음과 같습니다. 배열([4.33333333, 5., 5.66666667, 4. ])
또는 다음을 사용할 수 있습니다.enumerate
. 열 번호와 열 값도 제공합니다.
for num, column in enumerate(array.T):
some_function(column) # column: Gives you the column value as asked in the question
some_function(num) # num: Gives you the column number
NumPy 배열에는 이런 것들을 위한 내장된 방법들이 있습니다.
print(list(T.mean(axis=0)))
# [2.5, 42.0, 3.75]
2차원 배열에서 축 0은 열 차원입니다.
10년 4개월이나 너무 늦게 대답해서 죄송합니다.
list -> 배열 -> 행렬 -> 행렬.T
import numpy as np
list = [1, 99, 2, 2, 14, 5, 3, 12, 7, 4, 43, 1]
arr_n = np.array(list) # list -> array
print(arr_n)
matrix = arr_n.reshape(4, 3) # array -> matrix(4*3)
print(matrix)
print(matrix.T) # matrix -> matrix.T
[ 1 99 2 2 14 5 3 12 7 4 43 1]
[[ 1 99 2]
[ 2 14 5]
[ 3 12 7]
[ 4 43 1]]
[[ 1 2 3 4]
[99 14 12 43]
[ 2 5 7 1]]
언급URL : https://stackoverflow.com/questions/10148818/numpy-how-to-iterate-over-columns-of-array
'source' 카테고리의 다른 글
주어진 url로 이미지가 존재하는지 확인하는 방법은? (0) | 2023.10.11 |
---|---|
git receive 전 후크가 heroku와 함께 감소했습니다. (0) | 2023.10.11 |
SASS - 여러 파일에 걸쳐 변수 사용 (0) | 2023.10.11 |
WooCommerce 로그인 영역을 기본 Wordpress 로그인 양식으로 리디렉션 (0) | 2023.10.06 |
regex로 XML과 HTML을 파싱하기 어려운 이유에 대한 몇 가지 예를 들어주실 수 있나요? (0) | 2023.10.06 |