在 of numpy.take中,根据indices和axis对a进行索引,然后可选择地将结果存储在out参数中。是否存在一个在out上执行索引的函数?使用花哨的索引,它应该是这样的:
out[:, :, indices, :] = a
在这里,我假设是axis=2,但在我的例子中,我事先不知道这个轴。使用一维布尔掩码代替索引的解决方案也是可以接受的。
我在算法中使用了许多大型多维NP数组(2D和3D)。其中有许多迭代,在每次迭代期间,通过执行计算并将其保存到相同大小的临时数组中,重新计算数组。在单次迭代结束时,临时数组的内容被复制到实际的数据数组中。
示例:
global A, B # ndarrays
A_temp = numpy.zeros(A.shape)
B_temp = numpy.zeros(B.shape)
for i in xrange(num_iters):
# Calculate new values from A and B storing in A_temp and B_temp...
# Then
我搞不懂为什么我在下面的代码中没有得到axis =3的错误 import numpy as np
a = np.arange(27)
b = np.arange(27)
a = a.reshape((3,3,3))
b = b.reshape((3,3,3))
c = np.mean([a,b],axis=3) 我使用上面的代码来理解numpy中的axis是如何工作的。 来自this article,它显示了2D情况: ? 我计算出对于多维轴,轴0总是沿行(y维),轴1(x维)是沿着cols。因此,在我的例子中,我有一个3d数组,我会认为我应该有多一个轴,轴=2沿'z方向‘。但
我有:
>>> a
array([[1, 2],
[3, 4]])
>>> type(l), l # list of scalers
(<type 'list'>, [0, 1])
>>> type(i), i # a numpy array
(<type 'numpy.ndarray'>, array([0, 1]))
>>> type(j), j # list of numpy arrays
(<type 'list'&g
我想做这样的事:
a = # multi-dimensional numpy array
ares = # multi-dim array, same shape as a
a.shape
>>> (45, 72, 37, 24) # the relevant point is that all dimension are different
v = # 1D numpy array, i.e. a vector
v.shape
>>> (37) # note that v has the same length as the 3rd dimensio
我有许多数字的形状数组( Ni ,227,227,3),每个数组的Ni是不同的。
我想加入它们并制作形状数组(N1+N2+..+Nk,227,227,3),其中k是数组的数目。
我试过numpy.concatenate和numpy.append,但是他们要求在轴0中有相同的维数。我也对数组中的轴1和轴2感到困惑。
我被问到一个问题:我被给出了100000个序列,每个序列有1000个投掷硬币,排列在一个矩阵中。要生成数据,请使用以下命令:
import numpy
data = numpy.random.binomial(1, 0.25, (100000,1000))
现在,我需要1000次抛出的前5个序列(数据中的前5行)绘制(使用pylab)估计Xm,它是i从1到m的总和(意味着所有抛出到m的总和)。
现在我尝试做以下几件事:
data = numpy.random.binomial(1, 0.25, (100000,1000))
x = numpy.linspace(1,1000,1000, in
我正在使用python-3.x,我搜索了以下错误,但是找不到正确的解决方案。错误发生在下面的代码中。
我有一个随机的numpy二进制数组和一个随机数字数组,所以代码将根据其他数组的值删除二进制行,正如您从代码中看到的那样。
import random
import numpy as np
np.set_printoptions(threshold=np.nan)
for i in range (100):
binary= np.random.randint (2, size=(10, 4))
print("binary:" '\n',bi
我如何简化这一点:
import numpy as np
ex = np.arange(27).reshape(3, 3, 3)
def get_plane(axe, index):
return ex.swapaxes(axe, 0)[index] # is there a better way ?
在高维数组中,我找不到一个得到平面的numpy函数,是吗?
编辑
ex.take(index, axis=axe)方法很棒,但是它复制数组而不是提供视图,这是我最初想要的。
那么,用什么最短的方法来索引(不复制)第n维数组来获得它的2d切片(索引和轴)呢?
我尝试只将包含Atom_No 1的行写入数组x_o,y_o..但我遇到了越界错误。X包含678个元素,X_o的形状为226。Atom_No看起来像这个1,2,3,1,2,3,1,2,3....我要的坐标和这些坐标相对应。
ii=0
x_o=numpy.zeros((226))
y_o=numpy.zeros((226))
z_o=numpy.zeros((226))
for i in range(678):
if (Atom_No[i]==1):
ii=ii+1
x_o[ii]=x[ii]
y_o[ii]=y[ii]
z_
我有一个数组n,任务是按照选定的第二轴元素对第一轴进行排序。目前,我这样做,如下面的例子。输入数组为3x3x3,轴1按第二轴的第一元素排序。是否有更有效的方法使用nditer?
import numpy as np
a = np.random.rand(27).reshape(3,3,3)
print(a)
for i in np.arange(np.shape(a)[0]):
idx = np.argsort(a[i,:,1])
a[i]=a[i,idx]
print(a)
如果我有一个一维数组的堆栈,那么很容易在第一个轴上得到一个运行平均值:
import numpy as np
from scipy.ndimage import convolve1d
arr = np.random.random(size=(5000,10)) # a stack of 5000 1D arrays, each of length 10
running_mean = convolve1d(arr,np.ones(30)/30,axis=0) # replace each array by an average over 30 of them
然而,如果我有一堆3D数组,那么显而