The REPLICATE_INPLACE procedure updates an existing array by replacing all or selected parts of it with a specified value. REPLICATE_INPLACE can be faster and use less memory than the IDL function REPLICATE or the IDL array notation for large arrays that already exist.

Note: REPLICATE_INPLACE is much faster when operating on entire arrays and rows, than when used on columns or higher dimensions.

Examples


; Create a multidimensional zero array:
A = FLTARR( 40, 90, 10)
; Populate it with the value 4.5. (i.e., A[*]= 4.5 ):
REPLICATE_INPLACE, A, 4.5
;Update a single subvector.(i.e., A[*,4,0]= 20. ):
REPLICATE_INPLACE, A, 20, 1, [0,4,0]
; Update a group of subvectors.(i.e.,
;   A[0,0,*] = -8
;   A[0,5,*] = -8
;   A[0,89,*] = -8 )
REPLICATE_INPLACE, A, -8, 3, [0,0,0], 2, [0,5,89]
; Update a 2-dimensional slice of A (i.e., A[9,*, *] = 0.):
REPLICATE_INPLACE, A, 0., 3, [9,0,0] , 2, LINDGEN(90)

Syntax


REPLICATE_INPLACE, Array, Value [, D1, Loc1 [, D2, Range]]

Arguments


Array

The array to be updated. Array can be of any numeric type. REPLICATE_INPLACE does not change the size or type of Array.

Value

The value which will fill all or part of Array. Value may be any scalar or one-element array that IDL can convert to the type of Array. REPLICATE_INPLACE does not change Value.

D1

An integer indicating which dimension of Array is to be updated. All of the values changed will be in dimension D1.

Note: The D1 parameter is a one-based index; that is, the first dimension of the array is dimension 1, not dimension 0.

Loc1

An array with the same number of elements as the number of dimensions of Array. The Loc1 and D1 arguments together determine which one-dimensional subvector (or subvectors, if D2 and Range are provided) of Array is to be updated. The element of Loc1 that corresponds to the value of D1 is ignored.

For example, suppose you have a three-dimensional array of data. To update all elements in the subvector described by array[*,0,0]:

array = FLTARR(5,5,5)
REPLICATE_INPLACE, array, 98.6, 1, [0,0,0]

To change the same values using array syntax:

array[*,0,0] = 98.6

D2

An integer indicating in which dimension of Array a group of one-dimensional subvectors are to be updated. D2 should be different from D1. If D2 is present, the element of Loc1 that corresponds to the value of D2 is ignored.

Note: The D2 parameter is a one-based index; that is, the first dimension of the array is dimension 1, not dimension 0.

Range

An array of indices into dimension D2 of Array, indicating where to put one-dimensional updates of Array.

For example, suppose you have a three-dimensional array of data. To update all elements in the subvector described byarray[2,1:2,*]:

array = FLTARR(5,5,5)
REPLICATE_INPLACE, array, 3.14, 3, [2,0,0], 2, [1,2]

To change the same values using array syntax:

array[2,1:2,*] = 3.14

Keywords


Thread Pool Keywords

This routine is written to make use of IDL’s thread pool, which can increase execution speed on systems with multiple CPUs. The values stored in the !CPU system variable control whether IDL uses the thread pool for a given computation. In addition, you can use the thread pool keywords TPOOL_MAX_ELTS, TPOOL_MIN_ELTS, and TPOOL_NOTHREAD to override the defaults established by !CPU for a single invocation of this routine. See Thread Pool Keywords for details.

Version History


5.1

Introduced

See Also


REPLICATE, BLAS_AXPY