一般来说,我们可以使用任意大小的矩阵。对于我的应用,必须有方形矩阵。虚拟条目也应具有指定值。我想知道是否有任何内置的numpy?
或者最简单的方法
编辑:
矩阵X已经存在并且没有平方。我们想要填充值以使其成为正方形。用虚拟给定值填充它。所有原始值都保持不变。
非常感谢
答案 0 :(得分:6)
在LucasB的答案的基础上,这是一个函数,它将填充具有给定值mRef.child("Q6i3fI6lNdYYS0z5Jty4WUYE9g13").child("SavedImages").addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
Iterator<DataSnapshot> data = dataSnapshot.getChildren().iterator();
while(data.hasNext())
{
String savedImage = (String) data.next().child("Image").getValue();
savedImages.add(0, savedImage);
}
//Data has finished loading. Load your adapter
adapter = new customSwipeAdapter(this, savedImages);
viewPager.setAdapter(adapter);
viewPager.setPageTransformer(false, new DefaultTransformer());
}
@Override
public void onCancelled(DatabaseError databaseError) {}
});
的任意矩阵M
,使其变为正方形:
val
答案 1 :(得分:4)
自Numpy 1.7以来,有numpy.pad
功能。这是一个例子:
>>> x = np.random.rand(2,3)
>>> np.pad(x, ((0,1), (0,0)), mode='constant', constant_values=42)
array([[ 0.20687158, 0.21241617, 0.91913572],
[ 0.35815412, 0.08503839, 0.51852029],
[ 42. , 42. , 42. ]])
答案 2 :(得分:2)
对于2D numpy数组m
,通过创建一个max(m.shape)
x max(m.shape)
数组p
并将其乘以所需的填充值,可以直接执行此操作将与p
(即m
)对应的p[0:m.shape[0], 0:m.shape[1]]
切片设置为等于m
。
这导致了以下函数,其中第一行处理输入只有一个维度(即数组而不是矩阵)的可能性:
import numpy as np
def pad_to_square(a, pad_value=0):
m = a.reshape((a.shape[0], -1))
padded = pad_value * np.ones(2 * [max(m.shape)], dtype=m.dtype)
padded[0:m.shape[0], 0:m.shape[1]] = m
return padded
所以,例如:
>>> r1 = np.random.rand(3, 5)
>>> r1
array([[ 0.85950957, 0.92468279, 0.93643261, 0.82723889, 0.54501699],
[ 0.05921614, 0.94946809, 0.26500925, 0.02287463, 0.04511802],
[ 0.99647148, 0.6926722 , 0.70148198, 0.39861487, 0.86772468]])
>>> pad_to_square(r1, 3)
array([[ 0.85950957, 0.92468279, 0.93643261, 0.82723889, 0.54501699],
[ 0.05921614, 0.94946809, 0.26500925, 0.02287463, 0.04511802],
[ 0.99647148, 0.6926722 , 0.70148198, 0.39861487, 0.86772468],
[ 3. , 3. , 3. , 3. , 3. ],
[ 3. , 3. , 3. , 3. , 3. ]])
或
>>> r2=np.random.rand(4)
>>> r2
array([ 0.10307689, 0.83912888, 0.13105124, 0.09897586])
>>> pad_to_square(r2, 0)
array([[ 0.10307689, 0. , 0. , 0. ],
[ 0.83912888, 0. , 0. , 0. ],
[ 0.13105124, 0. , 0. , 0. ],
[ 0.09897586, 0. , 0. , 0. ]])
等