import numpy as np
np.seed(1)
a=np.random.randint(10)
b=np.random.randint(10)
我知道,在设置了随机种子之后,每次运行这个代码时,a和b都会被分别初始化为某个固定的值。
我的问题是:在新的运行中,如何直接生成b的值而不首先生成a的值?
在我看来,我需要这样的东西:
import numpy as np
np.seed(1)
a = np.random.randint(10)
# DO SOMETHING to get some situation-specific information, something like
我的函数应该根据用户的输入计算numpy.array的平均值或中值。我是这样写的
import numpy as np
...
if input=='means':
return np.mean(matrix, axis=1)
if input=='median':
return np.median(matrix, axis=1)
但这看起来有点麻烦。我想可能有一个标准的numpy函数,它将数组和操作作为输入。我认为类似于R的tapply(X, Y, FUNCTION=Z),其中Z可以是任何类型的函数。但我在或谷歌上找不到任何东西.
我有以下函数,它接受一个由浮点数组成的numpy数组和一个整数作为参数。数组'counts‘中的每一行都是一些实验的结果,我想随机抽取一个实验列表并将它们相加,然后重复这个过程来创建大量的样本组。
def my_function(counts,nSamples):
''' Create multiple randomly drawn (with replacement)
samples from the raw data '''
nSat,nRegions = counts.shape
sample
我想检查传递的函数是否是Numpy函数。例如:
import numpy as np
def my_func(passed_func):
if passed_func is Numpy function: # Here is the problem
print('It is')
else:
print('It is not')
>>>> my_func(np.random.randn)
>>>> It is
>>>> my_func(np
我正在使用列表理解来创建一个随机数的列表与numpy。是否有方法检查产生的随机数是否大于50,然后才将其附加到列表中。
我知道我可以简单地用:
numbers = [np.random.randint(50,100) for x in range(100)]
这将解决这个问题,但我只想知道是否有可能以某种方式检查np.random.randint(1,100)产生的数字是否大于50
有点像
numbers = [np.random.randint(1,100) for x in range(100) if {statement}]
因为比较np.random.randit会产生另一个与第一个数
我试图通过以下代码在64位Windows系统上用Python2.7生成随机数:
random_state=numpy_rng.random_integers(1e10)
但是我得到了以下错误。
OverflowError: Python int too large to convert to C long.
使用以下跟踪rand_num_generator = numpy.random.RandomState(random_state)文件"mtrand.pyx",第618行,在numpy\random\mtrand\mtrand.c:8275文件“mtrand.pyx”中,第
我想检查数组中的任何值是否大于某个阈值,.想点儿办法吧
但是下面的代码中的if循环似乎不起作用。即使满足了条件,它也不会在if循环中打印“yes”。知道为什么吗?
import random
import numpy as np
data = []
for i in range(0,10):
val = random.randint(0,110)
data.append(val)
data_np = np.array(data)
if all(i>=100 for i in data_np):
print('yes')
print(dat
尝试创建一个函数,该函数将在n个骰子滚动一次时将总和相加。到目前为止,我已经知道了这一点,但得到一个名称错误,指出n is not defined任何建议都会很有帮助
import numpy as np
def dice_rolln(n):
np.random.seed(0)
x = [np.random.randint(1, 7) for _ in range(n)]
return sum[x]
我试图绘制一个函数,我创建了一系列的值(y轴和x轴)。
我想计算的运算在“矩阵乘法”中很常见:
r^T * C * r
其中r^T应为形状(1,100),r为形状(100,1),C为形状(100,100)的矩阵(或ndarray形状为100,100)。使用numpy.dot()相乘,输出应该是一个值。
函数只有一个输入,可以是一个数据数组。
import numpy as np
# The user first sets the values used by the function
# Not "true code", because input() too comple
如何从大于2维的numpy数组中选择随机窗口,其中窗口相对于2个不同维度是随机的?
我想做一些与这篇文章中的答案类似的事情,但是三维的,而不是2维的:
我尝试向量化的示例(例如,我试图避免for循环):
import random
import numpy as np
ls = []
m = 3 # sequence length
k = 8 #batch_size
np_3D_array = np.random.randint(0,100, size = (5,7,4)) #random 3D array
for ii in range(k):
random_sheet = ran
给定一个N乘以M的数组W和一个大小为N的向量V,如何将V与W的每一列相乘,得到一个大小为M的一维数组D,其中D的每个元素由V和W的点积组成:,i。 所以就像这样 V = np.random.int(N)
W = np.random.int((N,M))
D = np.zeros(M)
for i in np.arange(M):
D[i] = dotproduct(V,W[:,i]) 有没有办法只使用numpy数组和numpy函数来做到这一点?我想避免使用for循环。
是否有更易读的方法在Python中编写遍历Numpy数组的每个元素的循环?我已经提出了以下代码,但它似乎很麻烦&不太易读:
import numpy as np
arr01 = np.random.randint(1,10,(3,3))
for i in range(0,(np.shape(arr01[0])[0]+1)):
for j in range(0,(np.shape(arr01[1])[0]+1)):
print (arr01[i,j])
我可以使它更加明确,例如:
import numpy as np
arr01 = np.random.randi
在下面的代码中,test_func_1比test_func_2慢一个数量级。是否不可能提高甚至匹配这个操作的numpy性能?
from numba import guvectorize
import numpy as np
@guvectorize(['void(float64[:,:,:], float64[:], float64[:,:,:])'], '(n,o,p),(n)->(n,o,p)', nopython=True)
def test_func_1(time_series, areas, res):
for i in range(a
我试图将具有生成值的numpy数组的值更改为char:
np_array = np.random.randint(0, 255, 5)
for i in range(256):
np_array[sample_data == i] = chr(i)
然而,它给了我一个错误:
ValueError: invalid literal for int() with base 10: '\x00'
我假设np.array是灵活的,就像一个能够保存其他值的列表一样,不是吗?它工作起来像一个真正的数组吗?我是否需要创建另一个变量,即char,如何在没有循环的情况下做到这一点?
import numpy as np
S = np.array(l)
for i in range(1, l):
random_int = randint(0, 1)
np.append(S, random_int)
我创建一个大小为l的numpy数组,并用0和1填充它。假设我想打印数组的第三个元素。我该怎么做?
如果我打字
print(S[2])
我得到以下错误:
IndexError: too many indices for array
我有一组矩阵如下
import numpy as np
Number = 10
mylist = [np.random.randint(1, 5, size=(4, 4)) for i in range(Number)]
现在我想要矩阵-乘mylist 中的所有矩阵,同时。在这里,Number的值可能会改变
是否有任何方法/函数可用于执行此操作?
我有一个布尔数组,其中我希望一个随机选择的元素的索引等于True。输出应该是带有该元素的(x,y,z)索引的元组。
是否有一种更优雅和/或更有效的方法来做到这一点,而不是这样做呢?
import numpy as np
rng = np.random.RandomState(42)
# create a random 3D boolean array
m = rng.choice(a=[False, True],size=(3,3,3))
# get (x,y,z) from one random cell in the boolean array which equals True
in
让我们考虑一个numpy数组
a = array([1,2,25,13,10,9,4,5])
包含偶数个元素的。我只需要每两个随机保留一个数组元素:第一个或第二个,然后是第三个或第四个,以此类推。例如,使用a,结果应该是:
c = array([1,13,9,5])
d = array([2,13,10,4])
e = array([2,25,10,5])
我必须在数百个元素的长数组和数千个沿着巨大循环的数组上做到这一点。使用pair_index+random.randint(0,1)迭代元素并保留或删除一对二的最快算法是什么一个每三个、四个等保留一个元素的通用方法会很好;-)谢谢
结果: