Python numpy阵列视图

Python numpy阵列视图,python,numpy,Python,Numpy,我有一个矩阵 m = np.zeros((5,5)) 最后一行的视图是什么 row = m[-1] 但是,如果我向m添加一列: m = np.c_[m[:,:2],[0,0,1,1,1],m[:,2:]] 然后打印出行,我没有得到新列 有没有办法不用电话线找零钱 row = m[-1] 再一次?在numpy库的范围内,您想要在这里实现的目标目前是不可能的。 请参阅上面的答案 您可以使用rx库,通过在最后一行设置主题来解决此问题 import numpy as np from rx im

我有一个矩阵

 m = np.zeros((5,5))
最后一行的视图是什么

row = m[-1]
但是,如果我向m添加一列:

m = np.c_[m[:,:2],[0,0,1,1,1],m[:,2:]]
然后打印出行,我没有得到新列

有没有办法不用电话线找零钱

row = m[-1]

再一次?

numpy
库的范围内,您想要在这里实现的目标目前是不可能的。 请参阅上面的答案

您可以使用
rx
库,通过在最后一行设置主题来解决此问题

import numpy as np
from rx import Observable, Observer
from rx.subjects import Subject

m = np.zeros((5,5))

m_stream = Subject()
last_row_stream = Subject()
last_row = None

def update_last(v):
    global last_row
    last_row = v

last_row_stream.subscribe(on_next=update_last)
last_row_stream.on_next(m[-1])

print(last_row)

m_stream.map(
    lambda v: np.insert(v, 2, [0, 0, 1, 1, 1], axis=1)
).subscribe(lambda v: last_row_stream.on_next(v[-1]))

m_stream.on_next(m)


print(last_row)

您希望以就地方式修改以前的数组,但这是不可能的。每次更改数组都会创建一个新对象。问题应该是:“为什么需要这样做?”我认为问题可能出在方法
np.c
,这与Numpy数组视图上的普通操作不同,这可以实现就地修改。@ManelFornos我在m中有一个单纯形表,希望得到目标行(最后一行),有时我需要向矩阵中添加列。你想得到最后一行而不每次运行这个
row=m[-1]
?我还想到了一个观察者模式。我希望观察所做的每一次更改,因此每当
m
更改时,我希望
更改。不管它是否真的改变了行。因此,我不想更改
插入
c
行。希望订阅
m
的所有更改
m\u流
m
的可观察值。您想在
m
上执行的任何操作都可以映射到
m_流
上,作为开始。您还可以在您认为合适的任何时候处置观察员
…订阅(lambda v:last_row_stream.on_next(v[-1]))
m_stream
上设置一个观察者,该观察者更新
last_row_stream
。您可以处理此问题并设置自己的观察者。