关于上一个问题:
删除2D矩阵中的全零行
import numpy as np
data = np.array([[4, 1, 1, 2, 0, 4],
[3, 4, 3, 1, 4, 4],
[1, 4, 3, 1, 0, 0],
[0, 4, 4, 0, 4, 3],
[0, 0, 0, 0, 0, 0]])
data = data[~(data==0).all(1)]
print(data)
输出:
[[4 1 1 2 0 4]
[3 4 3 1 4 4]
[1 4 3 1 0 0]
[0 4 4 0 4 3]]
好的,到目前为止还不错,但是如果我添加空列呢?
data = np.array([[0, 4, 1, 1, 2, 0, 4],
[0, 3, 4, 3, 1, 4, 4],
[0, 0, 1, 4, 3, 1, 0],
[0, 0, 4, 4, 0, 4, 3],
[0, 0, 0, 0, 0, 0, 0]])
输出为
[[0 4 1 1 2 0 4]
[0 3 4 3 1 4 4]
[0 1 4 3 1 0 0]
[0 0 4 4 0 4 3]]
这不是我想要的。
基本上如果我的矩阵是:
[[0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 4, 1, 1, 2, 0, 4, 0],
[0, 0, 3, 4, 3, 1, 4, 4, 0],
[0, 0, 1, 4, 3, 1, 0, 0, 0],
[0, 0, 0, 4, 4, 0, 4, 3, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0]]
我期待的输出是
[[4 1 1 2 0 4]
[3 4 3 1 4 4]
[1 4 3 1 0 0]
[0 4 4 0 4 3]]
您可以使用scipy。ndimage。测量。查找对象
:
import numpy as np
from scipy.ndimage.measurements import find_objects
data = np.array([[0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 4, 1, 1, 2, 0, 4, 0],
[0, 0, 3, 4, 3, 1, 4, 4, 0],
[0, 0, 1, 4, 3, 1, 0, 0, 0],
[0, 0, 0, 4, 4, 0, 4, 3, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0]])
data[find_objects(data.astype(bool))[0]]
#array([[4, 1, 1, 2, 0, 4],
# [3, 4, 3, 1, 4, 4],
# [1, 4, 3, 1, 0, 0],
# [0, 4, 4, 0, 4, 3]])
这里有一个方法-
def reduced_box(a):
# Store shape info
M,N = a.shape
# Mask of valid places in the array
mask = a!=0
# Get boolean array with at least a valid one per row
m_col = mask.any(1)
# Get the starting and ending valid rows with argmax.
# More info : https://stackoverflow.com/a/47269413/
r0,r1 = m_col.argmax(), M-m_col[::-1].argmax()
# Repeat for cols
m_row = mask.any(0)
c0,c1 = m_row.argmax(), N-m_row[::-1].argmax()
# Finally slice with the valid indices as the bounding box limits
return a[r0:r1,c0:c1]
样品运行-
In [210]: a
Out[210]:
array([[0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 4, 1, 0, 2, 0, 4, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 1, 4, 0, 1, 0, 0, 0],
[0, 0, 0, 4, 0, 0, 4, 3, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0]])
In [211]: reduced_box(a)
Out[211]:
array([[4, 1, 0, 2, 0, 4],
[0, 0, 0, 0, 0, 0],
[1, 4, 0, 1, 0, 0],
[0, 4, 0, 0, 4, 3]])
问题内容: 我有N维向量数组。 我正在使用sklearn的函数来计算距离值矩阵。注意,该矩阵关于对角线对称。 我需要与该矩阵中前N个值相对应的索引,因为这些索引将与成对索引相对应,它们代表了向量之间的最大距离。 我尝试做以获得每一行中最大值的索引,并获取每一列中最大值的索引,但是请注意: 和: 因为矩阵是关于对角线对称的,并且因为argmax返回它找到的具有最大值的第一个索引,所以我最终在行和列匹
问题内容: 我试图创建此代码以输入m x n矩阵。我打算输入,但是代码产生了。当我输入其他m×n矩阵时,也会发生相同的情况,代码会产生行数相同的m×n矩阵。 也许您可以帮助我找到我的代码有什么问题。 问题答案: 问题出在初始化步骤上。 这段代码实际上使您的每一行都引用相同的对象。如果任何列中的任何项目发生更改-其他所有列都将发生变化: 您可以在嵌套循环中初始化矩阵,如下所示: 或者,通过使用列表理
我目前有以下问题,给定一个数组,为了简单起见,假设一个4 x 4数组(我实际上正在使用512 x 512) 我想在数组周围循环/滑动,这样我就可以在表单中保存新数组 < code>np.array([3,5],[7,6]),np.array([2,4],[8,8]),np.array([1,6],[2,1]),np.array ([7,7],[1,4])等等(理想情况下,我可以选择我的“滑动”窗口
我有一个矩阵就像 现在我想删除每列的3个最大值,这样我就有了一个包含7行的新矩阵 我尝试为每列创建向量,然后用 然后把向量放到一个新的矩阵中,但由于我的矩阵有时有很多列,我想找到一种更简单的方法<谢谢你的帮助
我正在解决一个程序设计的挑战,在一个2D NxN矩阵中寻找最长的递增子序列的长度。在序列的每个元素中,行和列都必须增加(不需要连续)。本文用动态规划方法求解,但它是O(n^4),效率低。然而,在O(n^3)中有许多解。一种这样的解决办法是: 有人能解释一下它的工作原理或其他O(n^3)方法吗?我根本听不懂:(。
本文向大家介绍如何在R中创建具有随机值的矩阵?,包括了如何在R中创建具有随机值的矩阵?的使用技巧和注意事项,需要的朋友参考一下 通常,使用给定值创建矩阵,但是如果我们要创建具有随机值的矩阵,则将对矩阵函数使用常规方法。R中的随机选择可以根据我们的目标以多种方式完成,例如,如果要从正态分布中随机选择值,则将使用rnorm函数并将其存储在矩阵中,然后将其传递到矩阵函数中。 示例 输出结果 示例 输出结