당신은 멋진 NumPy와 인덱싱을 할 수있는 나는 가정 :
이
>>> a=np.arange(12).reshape(4,3)
>>> a
array([[ 0, 1, 2],
[ 3, 4, 5],
[ 6, 7, 8],
[ 9, 10, 11]])
>>> b=np.array([a[:,0:2].tolist(),a[:,2:3].tolist()])
>>> b
array([[[0, 1], [3, 4], [6, 7], [9, 10]],
[[2], [5], [8], [11]]], dtype=object)
>>> b[0][0][0],b[0][0][1],b[1][0][0]
(0, 1, 2)
.tolist()
의 추가는 a
의 사본을 만들 것입니다. a
그렇게되면
>>> b=np.array([a[:,0:2],a[:,2:3]])
>>> b
array([[[0 1], [3 4], [6 7], [ 9 10]],
[[2], [5], [8], [11]]], dtype=object)
>>> b[0][0][0],b[0][0][1],b[1][0][0]
(0, 1, 2)
그런 다음 b
이 변경됩니다 : 당신이 a
에 대한 참조 또는 뷰를 유지 b
내부의 객체를 원하는 경우
또는
>>> a[0][0]=23
>>> a
array([[23, 1, 2],
[ 3, 4, 5],
[ 6, 7, 8],
[ 9, 10, 11]])
>>> b
array([[[23 1], [3 4], [6 7], [ 9 10]],
[[2], [5], [8], [11]]], dtype=object)
>>> b[0][0].flags['OWNDATA']
False
를 두 번째 배열을 참고 더 이상 없다 'dtype = np.int' 당신이 고르지 않은 컬럼 크기를 가지고 있기 때문에'dtype = object'가됩니다. – jamylak
@jamylak 네, 맞아요, 두 번째의 dtype은 객체입니다. 프로그램에서 오류없이 작동하지만, 나는 또한 dtype에 의아해합니다. 구조는 기본적으로 내가 원하는 것입니다 – bayesrule
실제로 그런 개체가 필요하거나 대체 가능한 솔루션입니까? 예를 들어, 슬라이스 ('x'가 배열이라고 가정)를 살펴보십시오 :'x [:, 0 : 2], x [:, 2]' – Wolph