Chương này là phần tiếp theo của NumPy Array Basics A. Chúng tôi đã chơi với mảng NumPy sau
>>> import numpy as np >>> rArray = np.arange[0,20].reshape[[5,4]] >>> rArray array[[[ 0, 1, 2, 3], [ 4, 5, 6, 7], [ 8, 9, 10, 11], [12, 13, 14, 15], [16, 17, 18, 19]]]
Trong chương trước, chúng ta đã học cách cắt mảng NumPy hoạt động giống như danh sách python
Gán giá trị cho một mảng NumPy
Giống như danh sách python, chúng ta có thể gán giá trị cho các vị trí cụ thể
>>> squareArray = rArray[:3:,:3,] >>> squareArray array[[[ 0, 1, 2], [ 4, 50, 6], [ 8, 9, 100]]] >>> squareArray[0,0] *= 10 >>> squareArray[1,1] *= 10 >>> squareArray[2,2] *= 10 >>> squareArray array[[[ 0, 1, 2], [ 4, 500, 6], [ 8, 9, 1000]]]
Gán giá trị cho một lát mảng NumPy
Chúng ta có thể cắt một mảng NumPy và gán giá trị cho nó. Ví dụ bên dưới, cắt hàng đầu tiên và gán -1 cho các phần tử của hàng đầu tiên
>>> squareArray array[[[ 0, 1, 2], [ 4, 500, 6], [ 8, 9, 1000]]] >>> squareArray[:1:,] = -1 >>> squareArray array[[[ -1, -1, -1], [ 4, 500, 6], [ 8, 9, 1000]]]
Lập chỉ mục bằng cách sử dụng một mảng các chỉ số
Chúng ta có thể lập chỉ mục mảng NumPy bằng cách sử dụng một mảng các chỉ số
>>> import numpy as np >>> indxArr = np.array[[0,1,1,2,3]] >>> indxArr array[[0, 1, 1, 2, 3]] >>> rnd = np.random.random[[10,1]] >>> rnd array[[[ 0.20903716], [ 0.98787586], [ 0.12038364], [ 0.54208977], [ 0.49319279], [ 0.77011847], [ 0.57856482], [ 0.55202036], [ 0.58084383], [ 0.45641956]]] >>> rnd[indxArr] array[[[ 0.20903716], [ 0.98787586], [ 0.98787586], [ 0.12038364], [ 0.54208977]]]
Trước tiên, chúng tôi đã xác định mảng chỉ mục NumPy, indxArr, sau đó sử dụng nó để truy cập các phần tử của mảng NumPy ngẫu nhiên, rnd. Như chúng ta có thể thấy từ đầu ra, chúng ta có thể nhận được các phần tử thứ 0, 1, 1, 2 và 3 của mảng ngẫu nhiên
các np. trống rỗng[. ] chứa đầy các giá trị ngẫu nhiên/rác
>>> import numpy as np >>> emptyArray = np.empty[[2,3]] >>> emptyArray array[[[ 0.00000000e+000, 3.39519327e-313, 0.00000000e+000], [ 4.94065646e-324, 1.83322544e-316, 6.94110822e-310]]]
Có vẻ như ngẫu nhiên, nhưng nó không phải. Vì vậy, nếu chúng ta cần số thực ngẫu nhiên, chúng ta không nên sử dụng giá trị rỗng này [. ]
Lập chỉ mục bằng cách sử dụng một mảng chỉ số boolean
Chúng ta có thể lập chỉ mục mảng NumPy với mảng boolean
>>> squareArray array[[[ -1, -1, -1], [ 4, 500, 6], [ 8, 9, 1000]]] >>> boolArray array[[[ True, False, False], [False, True, False], [False, False, True]], dtype=bool] >>> squareArray[boolArray] array[[ -1, 500, 1000]]
Chúng tôi đặt mảng chỉ mục với giá trị bool Chỉ đúng cho các phần tử đường chéo và chúng tôi chỉ có thể nhận các mục đó dưới dạng mảng 1-D
Lập chỉ mục bằng cách sử dụng mảng hàng/cột chỉ mục
>>> squareArray array[[[ -1, -1, -1], [ 4, 500, 6], [ 8, 9, 1000]]] >>> indxRow = np.array[[False, True, False]] >>> indxCol = np.array[[True, False, True]] >>> squareArray[indxRow, indxCol] array[[4, 6]]
indxRow chỉ muốn hàng thứ 2 và indxCol chỉ muốn hàng thứ nhất và thứ 3, và chúng tôi đã chọn đúng hàng
Chúng ta có thể sử dụng ma trận boolean dựa trên một số bài kiểm tra và sử dụng nó làm chỉ mục để lấy các phần tử của ma trận vượt qua bài kiểm tra
Chúng ta có thể sử dụng ma trận boolean dựa trên một số bài kiểm tra và sử dụng nó làm chỉ mục để lấy các phần tử của ma trận vượt qua bài kiểm tra
>>> import numpy as np >>> myArray = np.arange[0,9].reshape[3,3] >>> myArray array[[[0, 1, 2], [3, 4, 5], [6, 7, 8]]] >>> myAverage = np.average[myArray] >>> myAverage 4.0 >>> aboveAverage = myArray > myAverage >>> aboveAverage array[[[False, False, False], [False, False, True], [ True, True, True]], dtype=bool] >>> myArray[aboveAverage] array[[5, 6, 7, 8]]
Cách lập chỉ mục như ở phần trước cũng có thể dùng để gán giá trị cho các phần tử của mảng. Điều này đặc biệt hữu ích nếu chúng ta muốn lọc một mảng. Chúng tôi có thể chắc chắn rằng tất cả các giá trị của nó đều ở trên/dưới một ngưỡng nhất định
Chúng tôi sẽ sử dụng std[. ] trả về độ lệch chuẩn của tất cả các phần tử trong mảng đã cho
________số 8Chúng tôi sẽ tạo một bản sao của myArray sẽ được kẹp. Nó sẽ chỉ chứa các giá trị trong một độ lệch chuẩn của giá trị trung bình. Các giá trị quá thấp hoặc quá cao sẽ được đặt thành tối thiểu và tối đa tương ứng. Chúng tôi đặt dtype=float vì thông thường myAverage và standardDev là các số dấu phẩy động
>>> clampedMyArray = np.array[myArray.copy[], dtype=float] >>> clampedMyArray array[[[ 0., 1., 2.], [ 3., 4., 5.], [ 6., 7., 8.]]] >>> clampedMyArray[ [myArray-myAverage] > standardDev ] = myAverage+standardDev >>> clampedMyArray[ [myArray-myAverage] < -standardDev ] = myAverage-standardDev >>> clampedMyArray array[[[ 1.4180111, 1.4180111, 2. ], [ 3. , 4. , 5. ], [ 6. , 6.5819889, 6.5819889]]] >>>
>>> squareArray = rArray[:3:,:3,] >>> squareArray array[[[ 0, 1, 2], [ 4, 50, 6], [ 8, 9, 100]]] >>> squareArray[0,0] *= 10 >>> squareArray[1,1] *= 10 >>> squareArray[2,2] *= 10 >>> squareArray array[[[ 0, 1, 2], [ 4, 500, 6], [ 8, 9, 1000]]]0
{dot} thực chất là phép nhân ma trận
>>> squareArray = rArray[:3:,:3,] >>> squareArray array[[[ 0, 1, 2], [ 4, 50, 6], [ 8, 9, 100]]] >>> squareArray[0,0] *= 10 >>> squareArray[1,1] *= 10 >>> squareArray[2,2] *= 10 >>> squareArray array[[[ 0, 1, 2], [ 4, 500, 6], [ 8, 9, 1000]]]1
>>> squareArray = rArray[:3:,:3,] >>> squareArray array[[[ 0, 1, 2], [ 4, 50, 6], [ 8, 9, 100]]] >>> squareArray[0,0] *= 10 >>> squareArray[1,1] *= 10 >>> squareArray[2,2] *= 10 >>> squareArray array[[[ 0, 1, 2], [ 4, 500, 6], [ 8, 9, 1000]]]2
>>> squareArray = rArray[:3:,:3,] >>> squareArray array[[[ 0, 1, 2], [ 4, 50, 6], [ 8, 9, 100]]] >>> squareArray[0,0] *= 10 >>> squareArray[1,1] *= 10 >>> squareArray[2,2] *= 10 >>> squareArray array[[[ 0, 1, 2], [ 4, 500, 6], [ 8, 9, 1000]]]3
Nó trả về các phần tử, từ x hoặc y, tùy thuộc vào điều kiện.
Nếu chỉ đưa ra điều kiện thì trả về điều kiện. khác không[].
Thông số
- tình trạng. array_like, bool Khi đúng, mang lại x, nếu không thì mang lại y
- x, y. array_like, Giá trị tùy chọn để chọn. x và y cần phải có hình dạng giống như điều kiện
trả lại
ngoài. ndarray hoặc bộ ndarrays Nếu cả x và y được chỉ định, mảng đầu ra chứa các phần tử của x khi điều kiện là True và các phần tử từ y ở nơi khác. Nếu chỉ có điều kiện được đưa ra, hãy trả về điều kiện tuple. nonzero[], các chỉ số có điều kiện là True
Chỉ điều kiện được đưa ra, trong đó trả về các chỉ số cho các phần tử thỏa mãn điều kiện
>>> squareArray = rArray[:3:,:3,] >>> squareArray array[[[ 0, 1, 2], [ 4, 50, 6], [ 8, 9, 100]]] >>> squareArray[0,0] *= 10 >>> squareArray[1,1] *= 10 >>> squareArray[2,2] *= 10 >>> squareArray array[[[ 0, 1, 2], [ 4, 500, 6], [ 8, 9, 1000]]]4
Nó trả về [2,2] dưới dạng chỉ số cho phần tử '8'
>>> squareArray = rArray[:3:,:3,] >>> squareArray array[[[ 0, 1, 2], [ 4, 50, 6], [ 8, 9, 100]]] >>> squareArray[0,0] *= 10 >>> squareArray[1,1] *= 10 >>> squareArray[2,2] *= 10 >>> squareArray array[[[ 0, 1, 2], [ 4, 500, 6], [ 8, 9, 1000]]]5
Nếu một số phần tử đáp ứng điều kiện, nó sẽ trả về các chỉ số cho tất cả các phần tử đó [4 phần tử đầu tiên là >> squareArray = rArray[:3:,:3,] >>> squareArray array[[[ 0, 1, 2], [ 4, 50, 6], [ 8, 9, 100]]] >>> squareArray[0,0] *= 10 >>> squareArray[1,1] *= 10 >>> squareArray[2,2] *= 10 >>> squareArray array[[[ 0, 1, 2], [ 4, 500, 6], [ 8, 9, 1000]]] 6
Trong cùng ngữ cảnh, ví dụ bên dưới trả về các chỉ số đường chéo [0,0], [1,1] và [2,2]
>>> squareArray = rArray[:3:,:3,] >>> squareArray array[[[ 0, 1, 2], [ 4, 50, 6], [ 8, 9, 100]]] >>> squareArray[0,0] *= 10 >>> squareArray[1,1] *= 10 >>> squareArray[2,2] *= 10 >>> squareArray array[[[ 0, 1, 2], [ 4, 500, 6], [ 8, 9, 1000]]]7
Hãy xem xét nhiều trường hợp hơn;
>>> squareArray = rArray[:3:,:3,] >>> squareArray array[[[ 0, 1, 2], [ 4, 50, 6], [ 8, 9, 100]]] >>> squareArray[0,0] *= 10 >>> squareArray[1,1] *= 10 >>> squareArray[2,2] *= 10 >>> squareArray array[[[ 0, 1, 2], [ 4, 500, 6], [ 8, 9, 1000]]]8
Ví dụ sau hoạt động như một loại mặt nạ. nếu bất kỳ phần tử nào của x không thỏa mãn x < 5, -1 sẽ thay thế phần tử đó