In [164]: x = np.array([1,2,3,4])
In [165]: x.__array_interface__
Out[165]:
{'data': (40465184, False),
'strides': None,
'descr': [('', '<i8')],
'typestr': '<i8',
'shape': (4,),
'version': 3}
Массив, созданный с помощью ndarray
, имеет тот же data
буфер:
In [166]: y = np.ndarray(shape = (2,1),buffer = x)
In [167]: y
Out[167]:
array([[5.e-324],
[1.e-323]])
In [168]: y.__array_interface__
Out[168]:
{'data': (40465184, False), # same as for x
'strides': None,
'descr': [('', '<f8')],
'typestr': '<f8',
'shape': (2, 1),
'version': 3}
и для массива с использованием int dtype:
In [169]: z = np.ndarray(shape = (2,1),buffer = x, dtype=int)
In [170]: z.__array_interface__
Out[170]:
{'data': (40465184, False),
'strides': None,
'descr': [('', '<i8')],
'typestr': '<i8',
'shape': (2, 1),
'version': 3}
На самом деле нам не нужно передавать x
в качестве аргумента buffer, только его атрибут x.data
:
In [171]: np.ndarray(shape = (2,1), buffer = x.data, dtype=int)
Out[171]:
array([[1],
[2]])
. Из-за буфера обмена данными в x
появляются изменения z
] В [172]: z [:] * = 2 В [173]: z Out [173]: массив ([[2], [4]]) В [174]: x Out [174]: массив ([2, 4, 3, 4])
и y
:
In [175]: y
Out[175]:
array([[1.e-323],
[2.e-323]])
С помощью offset
мы можем создать массив, который выбирает другую часть буфер данных:
In [178]: w=np.ndarray(shape = (2,1), buffer = x.data, dtype=int, offset=8)
In [179]: w
Out[179]:
array([[4],
[3]])
Но для этого мы обычно не используем ndarray
. Вместо этого мы используем срез, чтобы получить view
, при необходимости reshape
:
In [181]: x[1:3].reshape(2,1)
Out[181]:
array([[4],
[3]])
Вы можете построить эквивалент rand_mat
с помощью randoms.reshape(n,m)
или np.random.normal(size=(n,m))
.
ndarray
обычно требуется только тогда, когда buffer
поступает из другого источника, что еще не является ndarray
, которое может быть изменено или viewed
.
registerComponentWithRedux () устарела в пользу Регистрация экранов с помощью компонента поставщика упаковки .
Пример кода, который вы предоставляете, на самом деле является правильным способом сделать это, поскольку функция registerComponentWithRedux устарела. Регистрация экрана с избыточным отображением будет выглядеть примерно так ( образец из RNN docs ):
Navigation.registerComponent('navigation.playground.ReduxScreen', () => (props) => (
<Provider store={reduxStore}>
<ReduxScreen {...props} />
</Provider>
), () => ReduxScreen);