Swift 및 Pythonkit에서 Python 모듈 사용
Swift 및 Pythonkit에서 Python 모듈 사용
나는 Swift에서 PythonKit을 사용하는 것의 한계에 대한 도움이나 설명을 얻고자 했다. 음, 나는 PythonKit라고 말한다. 나는 실제로 Tensorflow 툴체인을 Xcode에 설치했다. 왜냐하면 나는 Pythonkit을 단일 종속성으로 작동시킬 수 없었기 때문이다(MacBook은 팬들이 널피를 가져오려 할 때 바퀴를 돌릴 것이다).
어쨌든 나는 스위프트에서 파이썬 모듈을 사용할 수 있다는 것이 훌륭하다고 말하고 싶었다. 이것은 iOS 앱 이상으로 잠재적으로 스위프트를 훨씬 더 쉽게 사용할 수 있게 해준다.
나의 문제는 파이썬 모듈을 잘 가져왔지만 얼마나 많은 기능을 가질지는 확실하지 않다는 것이다. 나는 너피 같은 것들이 거의 비슷할 것이라고 생각하지만 과학자로서 나는 netcdf 파일을 많이 사용해서 netCDF4를 사용하려고 노력해왔다. 이것은 가져오기에 문제가 없고 데이터 개체와 속성 등을 로드할 수 있지만 실제 어레이를 꺼낼 수 없습니다.
다음은 예입니다:
import PythonKit
PythonLibrary.useVersion(3, 7)
let nc = Python.import("netCDF4")
var Data = nc.Dataset("ncfile path")
var lat_z = Data.variables["lat_z"][:]
[:]을(를) 제거하면 스크립트가 실행되지만 배열이 아닌 변수 개체가 발생하므로 Xcode를 제거하면 오류가 발생합니다. lat_z.long_name과 같은 속성을 얻기 위해 끝에 항목을 추가할 수 있지만 [:]를 사용하지 않고 배열을 추출하는 방법을 잘 모르겠습니다
나는 이것이 단지 내가 swift(그것을 사용하는 초기의 매우)로 배워야 하는 구문의 차이이기를 바란다. 아니면 PythonKit의 한계인가? 나는 실제로 netcdf4를 사용하는 사람을 찾지 못했다(예: numpy와 Matplotlib). 그렇다면 swift로 파이썬 모듈을 사용하는 데 일반적인 제한이 있는가?
나는 또한 Matplotlib을 작동시키려고 노력하고 있지만 Xcode에서 뷰가 없는 명령줄 도구 프로젝트를 사용하기 때문에 이미지를 보여줄 수 없다는 것이 이치에 맞다.
포인터와 최신 문서에 대한 링크가 있으면 좋을 것입니다. 예를 들어 Python을 가져오기보다는 PythonKit를 가져오기로 하는 등의 변경 사항이 발생한 것 같습니다.
대단히 고맙습니다
이 속성은 와 동등한 pythitable에서 사용할 수 있습니다. Numpy 배열을 인덱싱하려면 (i) Swift 범위 구문을 사용하고 (ii) Numpy 범위 개체를 사용합니다:
import Foundation
import PythonKit
let np = Python.import("numpy")
let array = np.array([1, 2, 3, 4, 5])
print(array) // [1, 2, 3, 4, 5]
let subArray = array[0..<array.count]
print(subArray) // [1, 2, 3, 4, 5]
let subArray2 = array[np.arange(0, 2)]
print(subArray2) // [1, 2]
// Swift equivalent of Python ":"
let subArray3 = array[...]
Numpy 배열을 Swift 배열로 변환하고 Swift 메서드 및 첨자를 사용할 수도 있습니다:
let swiftArray = Array(array)
let swiftSubArray = swiftArray[0..<3]
print(swiftSubArray) // [1, 2, 3]
이 구현이 자동으로 준수되지 않기 때문에 성능 저하가 발생하므로(즉, O(n)) 작업 중에 속성을 사용하는 것을 선호해야 합니다.