Làm thế nào để bạn gán một giá trị cho một mảng trong python?

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ố 8

Chú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ố

  1. tình trạng. array_like, bool Khi đúng, mang lại x, nếu không thì mang lại y
  2. 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ử đó

Chủ Đề