numpy练习(一)

numpy练习(一)

创建一个 5x5 的二维数组,其中边界值为1,其余值为0
Z = np.ones((5,5))
Z[1:-1,1:-1] = 0
Z
使用数字 0 将一个全为 1 的 5x5 二维数组包围
import numpy as np
z = np.ones((5,5))
z = np.pad(z, pad_width=1, mode='constant',constant_values=0)
z
创建一个 5x5 的二维数组,并设置值 1, 2, 3, 4 落在其对角线下方
z = np.diag(1+np.arange(4),k=-1)
z
创建一个 10x10 的二维数组,并使得 1 和 0 沿对角线间隔放置
z = np.zeros((10,10),dtype=int)
z[1::2,::2] = 1
z[::2,1::2] = 1
z
创建一个 0-10 的一维数组,并将 (1, 9] 之间的数全部反转成负数
z = np.arange(11)
z[(1 < z) & (z <= 9)] *= -1
z
找出两个一维数组中相同的元素
z1 = np.random.randint(0,10,10)
z2 = np.random.randint(0,10,10)
print('z1:',z1)
print('z2:',z2)
np.intersect1d(z1,z2)
使用 NumPy 打印昨天、今天、明天的日期
yesterday = np.datetime64('today', 'D') - np.timedelta64(1, 'D')
today = np.datetime64('today', 'D')
tomorrow = np.datetime64('today', 'D') + np.timedelta64(1, 'D')
print('yesterday:',yesterday)
print('today:',today)
print('tomorrow:',tomorrow)
使用五种不同的方法去提取一个随机数组的整数部分
z = np.random.uniform(0,10,10)
print('原始值:',z)
print('方法1:',z - z%1)
print('方法2:',np.floor(z))
print('方法3:',np.ceil(z)-1)
print('方法4:',z.astype(int))
print('方法5:',np.trunc(z))
创建一个 5x5 的矩阵,其中每行的数值范围从 1 到 5
z = np.zeros((5,5))
z += np.arange(1,6)
z
创建一个长度为 5 的等间隔一维数组,其值域范围从 0 到 1,但是不包括 0 和 1
z = np.linspace(0,1,6,endpoint=False)[1:]
z
创建一个长度为10的随机一维数组,并将其按升序排序
z = np.random.random(10)
z.sort()
z
创建一个 3x3 的二维数组,并将列按升序排序
z = np.array([[7,4,3],[3,1,2],[4,2,6]])
print('原始数组:\n', z)
z.sort(axis=0)
z
创建一个长度为 5 的一维数组,并将其中最大值替换成 0
z = np.random.random(5)
print('原数组:', z)
z[z.argmax()] = 0
z
打印每个 NumPy 标量类型的最小值和最大值
for dtype in [np.int8, np.int32, np.int64]:
   print("The minimum value of {}: ".format(dtype), np.iinfo(dtype).min)
   print("The maximum value of {}: ".format(dtype),np.iinfo(dtype).max)
for dtype in [np.float32, np.float64]:
   print("The minimum value of {}: ".format(dtype),np.finfo(dtype).min)
   print("The maximum value of {}: ".format(dtype),np.finfo(dtype).max)
float32 转换为整型
z = np.arange(10, dtype=np.float32)
print(z)
z = z.astype(np.int32,copy=False)
z
将随机二维数组按照第 3 列从上到下进行升序排列
z = np.random.randint(0,10,(5,5))
print('排序前:\n',z)
z[z[:,2].argsort()]
从随机一维数组中找出距离给定数值(0.5)最近的数
z = np.random.uniform(0,1,20)
print('random array: \n',z)
z1 = 0.5
m = z.flat[np.abs(z - z1).argmin()]
m
将二维数组的前两行进行顺序交换
z = np.arange(25).reshape(5,5)
print(z)
z[[0,1]] = z[[1,0]]
print(z)
找出随机一维数组中出现频率最高的值
z = np.random.randint(0,10,50)
print('随机一维数组:',z)
np.bincount(z).argmax()
找出给定一维数组中非 0 元素的位置索引
z = np.nonzero([1,0,2,0,3,0,4,0])
z
对于给定的 5x5 二维数组,在其内部随机放置 p 个值为 1 的数
p = 4
z = np.zeros((5,5))
np.put(z, np.random.choice(range(5*5), p, replace=False),1)
z
对于随机的 3x3 二维数组,减去数组每一行的平均值
x = np.random.rand(3,3)
print(x)
y = x - x.mean(axis=1,keepdims=True)
y
获得二维数组点积结果的对角线数组
z1 = np.random.uniform(0,1,(3,3))
z2 = np.random.uniform(0,1,(3,3))
print(np.dot(z1, z2))
#np.diag(np.dot(z1, z2))
np.sum(z1 * z2.T, axis=1)
找到随机一维数组中前 p 个最大值
z = np.random.randint(0,100,100)
print(z)
p = 5
z[np.argsort(z)[-p:]]
计算随机一维数组中每个元素的 4 次方数值
z = np.random.randint(2,5,5)
print(x)
np.power(x,4)
### NumPy 练习题及答案 #### 打印当前 Numpy 版本 为了确认安装的 NumPy 库版本,可以使用如下代码: ```python import numpy as np print(np.__version__) ``` 这段代码会输出当前环境中所使用的 NumPy 的具体版本号[^1]。 #### 获取特定范围内的数组元素 对于获取一个维数组中满足条件的子集操作,可以通过布尔索引来实现。下面的例子展示了如何选取介于510之间的数值(包括边界值): ```python array = np.arange(15) nums = array[(array >= 5) & (array <= 10)] ``` 这里创建一个包含从0至14共15个连续整数维数组,并从中筛选出了大于等于5且小于等于10的所有元素[^2]。 #### 在二维数组中随机放置指定数量的元素 当需要在一个已知大小的二维矩阵里随机分布若干个相同或不同的值时,可采用以下函数来完成这任务: ```python def place_elements_randomly(shape, p, value=1): ''' 在给定形状的2D数组中随机放置p个元素,默认为1 参数说明: shape: 一个元组,指定了2D数组的尺寸; p: 整数,表示要放置的元素数目; value: 要填充的目标值,缺省情况下设为1. 返回值: 修改过的2D数组对象. ''' arr = np.zeros(shape, dtype=int) all_positions = np.arange(arr.size) chosen_positions = np.random.choice(all_positions, p, replace=False) np.put(arr, chosen_positions, value) return arr ``` 此方法接收三个参数:目标数组的维度`shape`,待插入项的数量`p`以及这些项目的实际取值`value`(如果未特别指出则默认设置成1),最终返回经过更新处理的新版二维数组实例[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Sweeney Chen

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值