Это работает в Swift 3.1 и более поздних версиях:
import AppKit
public extension NSBezierPath {
public var cgPath: CGPath {
let path = CGMutablePath()
var points = [CGPoint](repeating: .zero, count: 3)
for i in 0 ..< self.elementCount {
let type = self.element(at: i, associatedPoints: &points)
switch type {
case .moveToBezierPathElement: path.move(to: points[0])
case .lineToBezierPathElement: path.addLine(to: points[0])
case .curveToBezierPathElement: path.addCurve(to: points[2], control1: points[0], control2: points[1])
case .closePathBezierPathElement: path.closeSubpath()
}
}
return path
}
}
In [3]: x = np.array([[1, 2], [2, 3]]
In [4]: y = np.array([[3], [4]])
In [9]: z = np.hstack([x, y])
In [10]: z
Out[10]:
array([[1, 2, 3],
[2, 3, 4]])
In [11]: z[:,:1]
array([[1],
[2]])
Вы можете использовать numpy.hstack
:
>>> import numpy as np
>>> a = np.array([[1,2], [2,3]])
>>> b = np.array([[3], [4]])
>>> np.hstack((a,b))
array([[1, 2, 3],
[2, 3, 4]])
Удаление еще проще, просто срез:
>>> c = a[:,:1]
array([[1],
[2]])
Существует метод numpy.concatenate
import numpy as np
np.concatenate( [ np.array( [ [1,2], [2,3] ] ), np.array( [ [3],[4] ] ) ] , axis = 1)
или просто используйте hstack
или vstack
np.hstack( [ np.array( [ [1,2], [2,3] ] ), np.array( [ [3],[4] ] ) ] )
. Это могут быть также используется для удаления столбца (объединить два подмассива) - это можно использовать для удаления многих столбцов.
Чтобы удалить i-й столбец, вы можете взять подмассивы в этот столбец, а затем со следующего и объединить их. Например, чтобы удалить второй столбец (index 1
):
a - np.array( [ [1,2,3], [2,3,4] ] )
a1= a[:,:1]
a2= a[:,2:]
np.hstack([a1,a2])
, поэтому вообще
def remove_column( a, i ):
return np.hstack( [a[:,:i], a[:,(i+1):] ] )
, а затем
>>> remove_column(a, 1)
array([[1, 3],
[2, 4]])
>>> remove_column(a, 0)
array([[2, 3],
[3, 4]])
Фактически , как указано в комментарии - numpy реализует свой собственный delete
метод
np.delete(a, 1, 1)
удаленный второй столбец
и удаление нескольких из них можно выполнить с помощью
np.delete(a, [column1, columne2, ..., columnK], 1)
Третий аргумент - спецификатор оси, 0
будет означать строки, 1
столбцы, None
выравнивает весь массив