1D 배열을 2D 배열로 변환(numpy)
2D 배열의 열 수를 지정하여 1차원 배열을 2차원 배열로 변환하고자 합니다.다음과 같은 방식으로 작동할 수 있습니다.
> import numpy as np
> A = np.array([1,2,3,4,5,6])
> B = vec2matrix(A,ncol=2)
> B
array([[1, 2],
[3, 4],
[5, 6]])
numpy는 내가 만든 함수 "vec2matrix"처럼 작동하는 기능을 가지고 있습니까?(2D 배열과 같이 1D 배열을 인덱싱할 수 있다는 것은 알고 있지만, 제가 가지고 있는 코드에서는 그런 옵션이 아닙니다. 이 변환을 수행해야 합니다.)
당신은 배열을 원합니다.
B = np.reshape(A, (-1, 2))
어디에-1
입력 배열의 크기에서 새 차원의 크기를 유추합니다.
두 가지 옵션이 있습니다.
더 이상 원래 모양을 원하지 않는 경우 가장 쉬운 방법은 배열에 새 모양을 할당하는 것입니다.
a.shape = (a.size//ncols, ncols)
전환할 수 있습니다.
a.size//ncols
타고-1
자동으로 적절한 모양을 계산합니다.반드시a.shape[0]*a.shape[1]=a.size
그렇지 않으면 문제가 생길 것입니다.다음을 통해 새로운 어레이를 얻을 수 있습니다.
np.reshape
위에 제시된 버전과 거의 비슷하게 작동하는 기능new = np.reshape(a, (-1, ncols))
그게 가능할 때가 되면,
new
초기 배열의 보기일 뿐입니다.a
데이터가 공유됨을 의미합니다.하지만 어떤 경우에는,new
대신 배열이 복사본이 됩니다.참고:np.reshape
또한 선택적 키워드를 사용할 수 있습니다.order
행-주요 C 순서에서 열-주요 Fortran 순서로 전환할 수 있습니다.np.reshape
의 기능 버전입니다.a.reshape
방법.
요구 사항을 존중할 수 없는 경우a.shape[0]*a.shape[1]=a.size
당신은 새로운 배열을 만들어야 하는 문제에 봉착했습니다.사용할 수 있습니다.np.resize
기능 및 혼합np.reshape
,예를 들어
>>> a =np.arange(9)
>>> np.resize(a, 10).reshape(5,2)
다음과 같은 방법을 사용해 보십시오.
B = np.reshape(A,(-1,ncols))
배열의 요소 수를 다음으로 나눌 수 있는지 확인해야 합니다.ncols
그래도.또한 숫자가 입력되는 순서로 재생할 수 있습니다.B
사용order
키워드
1d 어레이 X를 2d 어레이로 변환하는 것이 유일한 목적이라면 다음을 수행합니다.
X = np.reshape(X,(1, X.size))
새 축을 추가하여 1차원 배열을 2차원 배열로 변환합니다.
a=np.array([10,20,30,40,50,60])
b=a[:,np.newaxis]--it will convert it to two dimension.
간단한 방법도 있습니다. 모양 바꾸기 기능을 다른 방법으로 사용할 수 있습니다.
A_reshape = A.reshape(No_of_rows, No_of_columns)
사용할 수 있습니다.flatten()
바보 같은 꾸러미에서.
import numpy as np
a = np.array([[1, 2],
[3, 4],
[5, 6]])
a_flat = a.flatten()
print(f"original array: {a} \nflattened array = {a_flat}")
출력:
original array: [[1 2]
[3 4]
[5 6]]
flattened array = [1 2 3 4 5 6]
some_array.shape = (1,)+some_array.shape
아니면 새것을 사세요.
another_array = numpy.reshape(some_array, (1,)+some_array.shape)
이렇게 하면 치수 +1이 되며, 이는 가장 바깥쪽에 브래킷을 추가하는 것과 같습니다.
Numpy를 사용하지 않고 1D 배열을 2D 배열로 변경합니다.
l = [i for i in range(1,21)]
part = 3
new = []
start, end = 0, part
while end <= len(l):
temp = []
for i in range(start, end):
temp.append(l[i])
new.append(temp)
start += part
end += part
print("new values: ", new)
# for uneven cases
temp = []
while start < len(l):
temp.append(l[start])
start += 1
new.append(temp)
print("new values for uneven cases: ", new)
import numpy as np
array = np.arange(8)
print("Original array : \n", array)
array = np.arange(8).reshape(2, 4)
print("New array : \n", array)
언급URL : https://stackoverflow.com/questions/12575421/convert-a-1d-array-to-a-2d-array-in-numpy
'programing' 카테고리의 다른 글
루비는 string.starts with("abc") 메서드가 내장되어 있습니까? (0) | 2023.07.09 |
---|---|
일부 Git 저장소에서 Git 저장소의 이름을 어떻게 얻습니까? (0) | 2023.07.09 |
Apache POI 3.6을 사용하여 Excel 시트에서 255개 이상의 열을 얻는 방법 (0) | 2023.07.09 |
SpringBootTest의 @DataJpaTest에서 구성 클래스를 가져오려면 어떻게 해야 합니까? (0) | 2023.07.09 |
각도 오류: '구성 요소 'X'가 모듈에 포함되어 있지 않습니다.하위 모듈에 선언된 경우 (0) | 2023.07.09 |