반응형
Numpy의 meshgrid는 두 벡터를 좌표 격자로 변환하는 데 매우 유용합니다. 이것을 3 차원으로 확장하는 가장 쉬운 방법은 무엇입니까? 따라서 세 개의 벡터 x, y, z가 주어지면 좌표로 사용할 수있는 3x3D 배열 (2x2D 배열 대신)을 구성합니다.
해결 방법
다음은 meshgrid의 소스 코드입니다.
def meshgrid(x,y):
"""
Return coordinate matrices from two coordinate vectors.
Parameters
----------
x, y : ndarray
Two 1-D arrays representing the x and y coordinates of a grid.
Returns
-------
X, Y : ndarray
For vectors `x`, `y` with lengths ``Nx=len(x)`` and ``Ny=len(y)``,
return `X`, `Y` where `X` and `Y` are ``(Ny, Nx)`` shaped arrays
with the elements of `x` and y repeated to fill the matrix along
the first dimension for `x`, the second for `y`.
See Also
--------
index_tricks.mgrid : Construct a multi-dimensional "meshgrid"
using indexing notation.
index_tricks.ogrid : Construct an open multi-dimensional "meshgrid"
using indexing notation.
Examples
--------
>>> X, Y = np.meshgrid([1,2,3], [4,5,6,7])
>>> X
array([[1, 2, 3],
[1, 2, 3],
[1, 2, 3],
[1, 2, 3]])
>>> Y
array([[4, 4, 4],
[5, 5, 5],
[6, 6, 6],
[7, 7, 7]])
`meshgrid` is very useful to evaluate functions on a grid.
>>> x = np.arange(-5, 5, 0.1)
>>> y = np.arange(-5, 5, 0.1)
>>> xx, yy = np.meshgrid(x, y)
>>> z = np.sin(xx**2+yy**2)/(xx**2+yy**2)
"""
x = asarray(x)
y = asarray(y)
numRows, numCols = len(y), len(x) # yes, reversed
x = x.reshape(1,numCols)
X = x.repeat(numRows, axis=0)
y = y.reshape(numRows,1)
Y = y.repeat(numCols, axis=1)
return X, Y
이해하기 매우 간단합니다. 패턴을 임의의 수의 차원으로 확장했지만이 코드는 결코 최적화되지 않았고 (완전히 오류 검사도되지 않음) 지불 한만큼 얻을 수 있습니다. 도움이되기를 바랍니다.
def meshgrid2(*arrs):
arrs = tuple(reversed(arrs)) #edit
lens = map(len, arrs)
dim = len(arrs)
sz = 1
for s in lens:
sz*=s
ans = []
for i, arr in enumerate(arrs):
slc = [1]*dim
slc[i] = lens[i]
arr2 = asarray(arr).reshape(slc)
for j, sz in enumerate(lens):
if j!=i:
arr2 = arr2.repeat(sz, axis=j)
ans.append(arr2)
return tuple(ans)
참조 페이지 https://stackoverflow.com/questions/1827489
반응형
'파이썬' 카테고리의 다른 글
파이썬 datetime 형식을 초로 변환 (0) | 2021.01.10 |
---|---|
파이썬 색인을 알고있는 목록의 여러 요소에 액세스 (0) | 2021.01.10 |
파이썬 Django는 위젯을 사용하여 읽기 전용 양식 필드를 만듭니다. (0) | 2021.01.09 |
파이썬 배열을 부동 파이썬으로 변환 할 수 없습니다. (0) | 2021.01.09 |
파이썬 Python : 디렉토리에서 확장자가 .MP3 인 최신 파일 찾기 (0) | 2021.01.09 |
댓글