我有两个未知维度的数组A
和B
我希望在N
维度上连接。例如:
>>> A = rand(2,2) # just for illustration, dimensions should be unknown
>>> B = rand(2,2) # idem
>>> N = 5
>>> C = concatenate((A, B), axis=N)
numpy.core._internal.AxisError: axis 5 is out of bounds for array of dimension 2
>>> C = stack((A, B), axis=N)
numpy.core._internal.AxisError: axis 5 is out of bounds for array of dimension 3
提出相关问题here。不幸的是,当尺寸未知时,所提出的解决方案不起作用,我们可能必须添加几个新轴,直到获得N
的最小尺寸。
我所做的是将形状延伸到1 {'}}尺寸,然后连接:
N
使用此代码,我应该能够将(2,2,1,3)数组与沿轴3的(2,2)数组连接起来。例如。
有没有更好的方法来实现这一目标?
ps:根据建议的第一个答案更新。
答案 0 :(得分:1)
另一种方法,使用numpy.expand_dims:
>>> import numpy as np
>>> A = np.random.rand(2,2)
>>> B = np.random.rand(2,2)
>>> N=5
>>> while A.ndim < N:
A= np.expand_dims(A,x)
>>> while B.ndim < N:
B= np.expand_dims(B,x)
>>> np.concatenate((A,B),axis=N-1)
答案 1 :(得分:1)
我认为您的方法没有任何问题,尽管您可以使代码更紧凑:
newshapeA = A.shape + (1,) * (N + 1 - A.ndim)
答案 2 :(得分:0)
这应该有效:
from django.db import models
from django.contrib.auth.models import AbstractUser
from django.utils.translation import ugettext_lazy as _
class User(AbstractUser):
username = models.CharField(max_length=255, unique=True, verbose_name=_("Username"))
email = models.EmailField(unique=True, verbose_name=_("Email Address"))
favorite_animal = models.CharField(max_length=255, verbose_name=_("Favorite Animal"))